![]() |
DelphiTwain
Hi,
habe mal die Komponente DelphiTwain getestet und ein Problem damit. Ich kann z.B die Scan-Auflösung auf 150x150 DPI einstellen, diese wird auch korrekt angezeigt. Unter TwainTwainAcquire wird mir Image zurückgegeben, welches ich als BMP speichere. Dieses Image hat immer eine Auflösung von 96 DPI. Beim Ändern der Scann-Auflösung (100x100dpi, 150x150dpi, 300x300dpi) ändert sich nur die Bildgröße, die Auflösung bleibt immer bei 96 DPI. Ich möchte das Image aber im A4-Format mit 150 DPI speichern und habe keine Ahnung wie ich vorgehen muß. |
Re: DelphiTwain
Hallo und Herzlich Willkommen!
Zitat:
Zum Speichern der tatsächlichen DPI-Größe kannst Du entweder den Bitmap-Header manuell anpassen (Bitmap in einen Stream laden und die Angaben schreiben), oder Du verwendest eine Komponente, die ein anderes Bildformat (z. B. PNG oder TIFF) zur Verfügung stellt und das Setzen der Auflösung zulässt. Das hätte auch den Vorteil, dass andere Formate wesentlich kleinere Dateien erzeugen. Gruß xaromz |
Re: DelphiTwain
Danke für die schnelle Antwort.
Gibt es vielleicht eine empfehlenswerte Komponente (möglichst Freeware)? Ich nutze Jedi, habe dort aber nichts gefunden. Die Unit [url=http://www.efg2.com/Lab/Library/UseNet/2000/0120a.txt/url] ist vielleicht auch eine Lösung. Wenn ich das richtig verstanden habe, kann ich einfach den Header überschreiben, um die Auflösung im BMP zu ändern. Komprimiert speichern könnte ich dannach als JPG. |
Re: DelphiTwain
Hallo,
Zitat:
![]() Zitat:
Gruß xaromz |
Re: DelphiTwain
Header überschreiben hat super geklappt. Ich dachte nicht, dass
es eine so einfache Lösung gibt. mfg und Danke Lucky64 |
Re: DelphiTwain
Hi,
habe jetzt doch noch ein Problem. Das Speichern als BMP mit 150 DPI klappt. Wenn ich das Image als JPG speichern will, wird es wieder als 96 DPI gespeichert. Hier mal der Beispiel-Code.
Delphi-Quellcode:
Gibt es für JPG vielleicht auch die Möglichkeit den Header zu überschreiben oder
procedure TForm1.TwainTwainAcquire(Sender: TObject;
const Index: Integer; Image: TBitmap; var Cancel: Boolean); var j:tjpegimage; begin SetBmpDPI(Image,150); // Header überschreiben Image.SaveToFile('c:\testDPI.bmp'); j:=tjpegimage.create; j.Assign(Image); j.SaveToFile('c:\testDPI.jpg'); j.Free; Cancel := TRUE; {Only want one image} end; eine andere Lösung? |
Re: DelphiTwain
Hallo,
Du kannst natürlich ebenso bei einem JPEG den Header manipulieren. Leider kenne ich keine JPEG-Komponente, die eine Änderung der Auflösung erlaubt. Wenn Du etwas tiefer in das Windows-API einsteigen willst, kann ich Dir GDI+ empfehlen. Hier gibt es die Möglichkeit, die Auflösung zu ändern. Das ist aber natürlich etwas aufwendiger. Gruß xaromz |
Re: DelphiTwain
Zitat:
DPI könnte umterumständen damit beinflußt werden. Zitat:
Besser wird das Bild deshalb noch lange nicht! Es ist nicht der Header sondern die Kompremierung bzw die Anzahl der Pixel was die Qualität des Bildes ausmacht. gruß |
Re: DelphiTwain
Zitat:
DPI könnte umterumständen damit beinflußt werden. Zitat:
Besser wird das Bild deshalb noch lange nicht! Es ist nicht der Header sondern die Kompremierung bzw die Anzahl der Pixel was die Qualität des Bildes ausmacht. gruß |
Re: DelphiTwain
Hllo,
Zitat:
Zitat:
Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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