Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   JPG-Bilder drehen (https://www.delphipraxis.net/207805-jpg-bilder-drehen.html)

oldmann 5. Mai 2021 10:59

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;

himitsu 5. Mai 2021 11:05

AW: JPG-Bilder drehen
 
Zitat:

Das Programm stört sich an den auskommentierten Zeilen.
Und wie?

* zur Laufzeit (Fehlermeldung?)
* im Compiler (wie ist die Meldung ... PS: Strg+C funktioniert)

jziersch 5. Mai 2021 11:09

AW: JPG-Bilder drehen
 
Dein Delphi 6 code nutz anscheinend die erweiterte JPEG Klasse.

http://cc.embarcadero.com/Item/19723

Meines Wissens hats die nicht in Delphi offiziell geschafft.

oldmann 5. Mai 2021 12:00

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

himitsu 5. Mai 2021 12:09

AW: JPG-Bilder drehen
 
Zitat:

Zitat von oldmann (Beitrag 1488622)
verstehe ich nicht

Viele schreiben es manuell "ab" (und vergessen dann gern die Hälfte oder bauen Fehler ein), aber man kann die Meldung ja einfach kopieren :angle:

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.

venice2 5. Mai 2021 12:10

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.

dummzeuch 5. Mai 2021 12:26

AW: JPG-Bilder drehen
 
Es ist vermutlich die folgende jpeg-Unit, die da verwendet wird:

https://sourceforge.net/projects/deljpegex/

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.

venice2 5. Mai 2021 12:31

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;

oldmann 6. Mai 2021 11:03

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 02:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz