Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi JPG's zusammenfügen (https://www.delphipraxis.net/67025-jpgs-zusammenfuegen.html)

Chrissi91 8. Apr 2006 07:28


JPG's zusammenfügen
 
Hi :hi:,

mit dieser Procedure kann ich 2 Images waagerecht aneinanderfügen, wenn sie vom Typ BMP sind.

Delphi-Quellcode:
image3.picture.assign(image1.picture.bitmap);
Image3.Picture.Bitmap.Width:=Image3.Picture.Bitmap.Width + image1.picture.bitmap.width;
image3.picture.Bitmap.Canvas.CopyRect(rect(image1.Picture.width,0,image2.picture.Width+
image1.picture.width,image2.picture.height),image2.picture.bitmap.Canvas, rect(0, 0,
image2.picture.width, image2.picture.Height));
Das funktioniert auch, aber wie mach ich das mit JPG-Dateien? Wenn ich das auf JPGs anwende, passiert nichts.

Irgendwie muss ich das hinbekommen. Mein Vater wünscht sich das zum Geburtstag und er hat am 12. diesen Monats Geburtstag.

Vielleicht hat jemand von euch Tipps, wie ich das dementsprechend anpasse.

P.S.: Man könnt es ja von JPG ins BMP umwandeln, danach zusammenfügen und wieder BMP in JPGs umwandeln, nur das scheint nicht sehr elegant. ^^

Khabarakh 8. Apr 2006 07:42

Re: JPG's zusammenfügen
 
Zitat:

Zitat von Chrissi91
P.S.: Man könnt es ja von JPG ins BMP umwandeln, danach zusammenfügen und wieder BMP in JPGs umwandeln, nur das scheint nicht sehr elegant. ^^

Auch nicht, wenn es der einzige Weg ist?
Bei der Grafikmanipulation müssen alle Bilder als Bitmaps im Speicher liegen, also völlig unkomprimiert. Bei LoadFromFile(JPG) wird das JPEG automatisch enkodiert, beim Speichern vice versa.

faux 8. Apr 2006 13:39

Re: JPG's zusammenfügen
 
Zitat:

Zitat von Khabarakh
Zitat:

Zitat von Chrissi91
P.S.: Man könnt es ja von JPG ins BMP umwandeln, danach zusammenfügen und wieder BMP in JPGs umwandeln, nur das scheint nicht sehr elegant. ^^

Auch nicht, wenn es der einzige Weg ist?
Bei der Grafikmanipulation müssen alle Bilder als Bitmaps im Speicher liegen, also völlig unkomprimiert. Bei LoadFromFile(JPG) wird das JPEG automatisch enkodiert, beim Speichern vice versa.

Redest du hier von der Delphi-Grafikmanipulation, oder von der Windows-API-Grafikmanipulation (wenn es so eine gibt) oder von jeder? Ich denke kaum, dass Photoshop jedes Bild zuerst in ein Bitmap umwandelt. ;)

Grüße
Faux

alcaeus 8. Apr 2006 13:50

Re: JPG's zusammenfügen
 
Moin chrissi91,

binde mal die Unit JPEG ein. Dann ladest du die Bilder in ein TJPEGImage, und schiebst sie dann in ein Bitmap. Hier mal das Ganze ohne Resourcenschutzbloecke:
Delphi-Quellcode:
var Bitmap: TBitmap;
  JPEGImage: TJPEGImage;
begin
  JPEGImage := TJPEGImage.Create();
  JPEGImage.LoadFromFile('Pfad zur Datei');
 
  Bitmap := TBitmap.Create();
  Bitmap.Assign(JPEGImage);
end;
Anschliessend kannst du mit den Bitmaps genauso arbeiten wie gehabt :)

Greetz
alcaeus

Chrissi91 8. Apr 2006 15:47

Re: JPG's zusammenfügen
 
Okay, danke euch beiden. Da ich jetzt schon fast fertig bin, bleibe ich jetzt erstmal bei der komplizierteren Möglichkeit, da es sich bei meinem Vater immer nur um kleine Bilder handelt.

Das geht auch noch schnell genug. Aber vielleicht werde ich deine Möglichekit danach ersetzen mit TJpegImage

Chrissi91 8. Apr 2006 16:44

Re: JPG's zusammenfügen
 
Wenn ichm it folgender Procedure das BMP wieder in ein JPG umwandeln möchte, merke ich hinterher, dass zwar die Datei die Endung jpg hat, wie ich es im Dialog angebe, die Datei aber so groß wie eine BMP ist.

Delphi-Quellcode:
If (FileExists(ParamStr(1))) and (LowerCase(ExtractFileExt(ParamStr(1))) = '.bmp') then
        begin
          Try
            JPG.Create;
            JPG.Assign(imgPreview.Picture);
            JPG.SaveToFile(edtSave.Text);
          Finally
            FreeAndNil(JPG);
          end;
        end;
Diesen Code fand ich in der DP.

Vielleicht habe ich auch etwas versehentlich entnommen, weil ich dachte, es wäre unwichtig ...

Chrissi91 10. Apr 2006 17:34

Re: JPG's zusammenfügen
 
*push*

Ich finde keinen funktionierenden Code für bmp2jpg.

Vll könnt ihr mir ja einen zeigen, den ich in der Suche übersehen habe.

Khabarakh 10. Apr 2006 18:11

Re: JPG's zusammenfügen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von faux
Ich denke kaum, dass Photoshop jedes Bild zuerst in ein Bitmap umwandelt. ;)

Schonmal ausprobiert :wink: ?
Wie willst du denn auf die einzelnen Pixel eines Bildes zugreifen, wenn diese nicht linear und enkodiert im Speicher liegen?

@Chrissi: Ich habe es nicht ausprobiert, aber vielleicht ist einfach die Qualität zu hoch eingestellt?

Chrissi91 10. Apr 2006 20:06

Re: JPG's zusammenfügen
 
Versteh ich jetzt nicht. Ich möchte einfach ein Bitmap das im TIMage liegt als ganz normales JPG speichern. Die Qualität soll standardmäßig sein.

Nachdem ich das mit dem etwas weiter oben aufgeführten Code gemacht habe, hieß die Datei *.jpg aber es war keine. Der Computer konnte sie nicht mehr lesen.

Deshalb suche ich eine Procedure / Funktion, die ein Bitmap in einem TIMage als JPG speichert. Es muss keine sehr schnelle Procedure sein, hauptsache sie funktioniert.

DGL-luke 10. Apr 2006 20:11

Re: JPG's zusammenfügen
 
mit der unit jpeg und TJPEGImage sollte das möglich sein. in meinem Hier im Forum suchenJPEG-Kompressor wird da ganz schön krass rumkonvertiert... ich hab das glaub ich inzwischen auch schon einigermaßen kommentiert. schau dir einfach die lade- und speicherprozeduren an, vielleicht hilft dir das.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:08 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-2025 by Thomas Breitkreuz