![]() |
JPG-Bilder drehen
Liebe Delphi Gemeinde,
ich habe ein Problem mit dem Drehen von JPG-Bildern. Bis Delphi 6 Prof. klappte das Drehen einwandfrei. Ab Tokyo 10.2.2 klappt das nicht mehr. Das Programm stört sich an den auskommentierten Zeilen. Hat jemand eine Idee was das Problem sein könnte ??? Gruß Oldmann
Delphi-Quellcode:
procedure TScannen.JPG_Bilder_drehen(Sender: TObject);
var B : TBitmap; begin if Image1.Picture.Graphic is TJPEGImage then FJpeg := TJPEGImage(Image1.Picture.Graphic) else FJpeg := nil; if FJpeg <> nil then begin FJpeg.Performance := jpBestSpeed; if false then begin // FJpeg.AutoCMYKToRGB := false; // don't convert to RGB B := TBitmap.Create; B.Assign(FJpeg); // jpeg.BitmapCMYKToRGB(B, true); Image1.Picture.Bitmap.Assign(B); B.Free; FJpeg := nil; end; end; if FJpeg = nil then exit; // FJpeg.Transform(TJpegTransform(4 {cbTrans.ItemIndex})); FRect := Rect(-1,-1,0,0); end; procedure TScannen.SpeedButton6Click(Sender: TObject); var MyFilesExtension:string; begin MyFilesExtension := ExtractFileExt(Edit4.Text); If Uppercase(MyFilesExtension) = '.JPG' Then Scannen.JPG_Bilder_drehen(Sender); end; |
AW: JPG-Bilder drehen
Zitat:
* zur Laufzeit (Fehlermeldung?) * im Compiler (wie ist die Meldung ... PS: Strg+C funktioniert) |
AW: JPG-Bilder drehen
Dein Delphi 6 code nutz anscheinend die erweiterte JPEG Klasse.
![]() Meines Wissens hats die nicht in Delphi offiziell geschafft. |
AW: JPG-Bilder drehen
Hallo himitsu,
das sind die Fehlermeldungen zu den drei auskommentierten Zeilen: E2003 Undeklarieter Bezeichner: AutoCMYKToRGB E2003 Undeklarieter Bezeichner: BitmapCMYKToRGB E2003 Undeklarieter Bezeichner: Transform Deine zweite Zeile * im Compiler (wie ist die Meldung ... PS: Strg+C funktioniert) verstehe ich nicht. Gruss Oldmann |
AW: JPG-Bilder drehen
Zitat:
OK, dann liegt es daran, dass du mit unterschiedlichen Versionen oder gar einer ganz anderen Komponente arbeitest, und entweder die neue Komponente diese Funktionen nicht kennt, oder sie dort anders heißen. Das Drehen kann man notfalls auch mit anderen Komponenten machen (Bitmap drehen, dafür findet sich viel im Forum), also JPEG auf Canvas des Bitmap malen, dort drehen und dann den Canvas vom Bitmap zurück in den Canvas des JPEG kopieren (vorher Width und Height anpassen/tauschen) Eventuell kann man auch direkt im Canvas drehen, dann kann das Bild dafür vermutlich auch im JPEG bleiben. Du könntest natürlich notfalls auch versuchen die alte Komponente/Unit ins neue Delphi zu bekommen und dann weiterhin Diese zu verwenden. |
AW: JPG-Bilder drehen
Die Jpeg.unit welche du noch unter Delphi 6 verwendest gibt es unter Tokyo 10.2.2 so nicht!
Deshalb werden die Bezeichner auch nicht gefunden. Du mußt die Jpeg Unit (aus Tokyo 10.2.2) durchforsten welche ähnlichen Funktionen dafür dort vorhanden sind. PS: @himitsu war schneller. |
AW: JPG-Bilder drehen
Es ist vermutlich die folgende jpeg-Unit, die da verwendet wird:
![]() Angeblich compiliert das auch für Delphi 2009, also vermutlich auch für neuere Versionen. Interessantes Projekt übrigens, muss mich mir mal genauer ansehen. Diese lossless Transformationen für JPEGs wären sehr hilfreich, insbesondere, wo wir libjpeg-turbo bereits einsetzen. |
AW: JPG-Bilder drehen
Nun dann muß er jpegex ohne jpeg in sein Projekt einbinden (jpeg wird ja schon von der jpegex eingebunden)
Ob die Unit jpeg (D6) jedoch mit der von Tokio kompatibel ist mag dahin gestellt sein.
Delphi-Quellcode:
//version 80, last supported by libjpeg-turbo
JPEG_LIB_VERSION = 80; |
AW: JPG-Bilder drehen
Hallo,
erst einmal vielen dank an alle die sich eingebracht haben. Ich habe jetzt in der 'Entwickler Ecke' eine neue Routine "TGraphic" gefunden die super funktioniert. Also nochmals vielen Dank. Gruß Oldmann |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz