Violation i Jpg

0

Witam!

Mój Delphi chyba oszalał! Jeżeli jakakolwiek aplikacja korzysta z dialogu OpenImage to można go użyć (w skompilowanym programie) tylko 3 razy! (później Delphi się wiesza)

Napisałem taki program któey kompresuje BMP->JPG. W programie umieściłem różne opcje kompresji. Kompilator nie zgłasza błędów więc odpalam program. Ładuje bitmape i nie ważne co ustawie podczas kompresji wyskakuje "JPEG Error #41'. Poprzez breakpointy wykryłem że błąd występuje podczas procedury Canvas.StretchDraw(Rect(10,20,200,400),Jpg);. Mam dwie zmiemme TJPGEImage ponieważ skompresowany Jpg jest zapisywany na dysku a później ładowany jest do drugiej zmiennej i wyświtlany powyższą procedurą.

( Wiem że troche to niejasne ale ale kod jest długaśny)

What's wrong?

0

Jeśli ładujesz do komponentu TImage pliki .jpg (czy jak tam sobie to robisz) mogą występować problemy z rysowaniem po Canvas'ie. Zobacz czy błąd wystąpi także przy ładowaniu pliku .bmp (jak mniemam nie powinien, jednak nie wiem czym jest to spowodowane :) )

0

Niestety to nie to

W moim programie nie ma żadnych Image'ów Bitmape też rysuje po canvasie (StretchDraw) a to działa

Jednak Dzięki za post (będe czekał dalej)

0

przerob sobie moja procedure do konwertowania
uses jpeg;

procedure convert_bmp_to_jpg(bmp : string);
var
Bitmap : TBitmap;
JPG : TJPEGImage;
output_str : string;
begin
JPG := TJPEGImage.Create;
Bitmap := tbitmap.create;
bitmap.loadfromfile(bmp);
JPG.Assign(bitmap);
output_str := extractfilename(bmp);
delete(output_str,length(output_str)-3,5);
jpg.SaveToFile(ExtractFileDir(bmp)+''+output_str+'.jpg');
jpg.free;
bitmap.free;
end;

0

Dzięki za dobre chęci ale teraz wyskakuje AccesViolation (wywaliłem nawet wszystkie opcje i zostawiłem samą "czystą Twoją procedurkę)
Sprawdze jeszce raz ale muszę znowu kompa restartnąć

1 użytkowników online, w tym zalogowanych: 0, gości: 1