AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DelphiTwain

Ein Thema von Lucky64 · begonnen am 3. Okt 2006 · letzter Beitrag vom 3. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
Lucky64

Registriert seit: 3. Okt 2006
5 Beiträge
 
#1

DelphiTwain

  Alt 3. Okt 2006, 13:39
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ß.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: DelphiTwain

  Alt 3. Okt 2006, 14:01
Hallo und Herzlich Willkommen!
Zitat von Lucky64:
Unter TwainTwainAcquire wird mir Image zurückgegeben, welches ich als BMP speichere.
Das Problem ist, dass unter Windows ein Bitmap standardmäßig immer eine Auflösung von 96 DPI besitzt. Da Du aber die tatsächliche Auflösung kennst, kannst Du das ja umrechnen.
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Lucky64

Registriert seit: 3. Okt 2006
5 Beiträge
 
#3

Re: DelphiTwain

  Alt 3. Okt 2006, 15:47
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.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: DelphiTwain

  Alt 3. Okt 2006, 16:12
Hallo,
Zitat von Lucky64:
Gibt es vielleicht eine empfehlenswerte Komponente (möglichst Freeware)?
Eine Komponente kann ich Dir jetzt auch die Schnelle nicht nennen, aber schau doch mal bei Torry vorbei.
Zitat von Lucky64:
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.
Genau.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Lucky64

Registriert seit: 3. Okt 2006
5 Beiträge
 
#5

Re: DelphiTwain

  Alt 3. Okt 2006, 16:52
Header überschreiben hat super geklappt. Ich dachte nicht, dass
es eine so einfache Lösung gibt.

mfg und Danke
Lucky64
  Mit Zitat antworten Zitat
Lucky64

Registriert seit: 3. Okt 2006
5 Beiträge
 
#6

Re: DelphiTwain

  Alt 3. Okt 2006, 18:06
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:
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;
Gibt es für JPG vielleicht auch die Möglichkeit den Header zu überschreiben oder
eine andere Lösung?
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: DelphiTwain

  Alt 3. Okt 2006, 18:20
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

Re: DelphiTwain

  Alt 3. Okt 2006, 18:23
Zitat von Lucky64:
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:
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;
Gibt es für JPG vielleicht auch die Möglichkeit den Header zu überschreiben oder
eine andere Lösung?
Ich würde mich mal über die Kompremierungsmethode informieren
DPI könnte umterumständen damit beinflußt werden.


Zitat:
Header überschreiben hat super geklappt. Ich dachte nicht, dass
es eine so einfache Lösung gibt.
Header überschreiben gaukelt dir nur etwas vor.
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ß
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: DelphiTwain

  Alt 3. Okt 2006, 18:24
Zitat von Lucky64:
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:
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;
Gibt es für JPG vielleicht auch die Möglichkeit den Header zu überschreiben oder
eine andere Lösung?
Ich würde mich mal über die Kompremierungsmethode informieren
DPI könnte umterumständen damit beinflußt werden.


Zitat:
Header überschreiben hat super geklappt. Ich dachte nicht, dass
es eine so einfache Lösung gibt.
Header überschreiben gaukelt dir nur etwas vor.
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ß
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#10

Re: DelphiTwain

  Alt 3. Okt 2006, 18:31
Hllo,
Zitat von EWeiss:
Ich würde mich mal über die Komprimierungsmethode informieren
DPI könnte umterumständen damit beinflußt werden.
Nein. Ich vermute, die JPEG-Komponente wertet die Angaben einfach nicht aus.
Zitat von EWeiss:
Header überschreiben gaukelt dir nur etwas vor.
Besser wird das Bild deshalb noch lange nicht!
Es ist nicht der Header sondern die Komprimierung bzw die Anzahl der Pixel was
die Qualität des Bildes ausmacht.
Ich denke, das weiß er.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 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