![]() |
Farbstich nach Bitmap-Operation
Hallo,
ich habe folgendes Problem mit monochromen Grafiken: Ich habe ein servergestützes Programm, welches an mehreren Arbeitsplätzen läuft. An den jeweiligen Arbeitsplätzen scanne ich Bilder mittels der Komponente ![]() Leider können manche Scanner aber nur 300 dpi oder scannen im Querformat. Das zwingt mich, die Bilder zu drehen und/oder zu stauchen. Die von mir dazu verwendeten Funktionen PlgBlt bzw. StretchBlt arbeiten aber nicht mit monochromen Bitmaps. Das wäre auch nicht das Problem, da ich ja das Bild nach dem Bearbeiten mit Bitmap.PixelFormat:=pf1bit; wieder monochrom machen kann; jedenfalls theoretisch. Leider bekommen diese Bilder aber immer einen "Farbstich". Es sind zwar zwei Farben (=monochrom). Aber neben schwarz bekomme ich nicht weiß, sondern meistens rot. Ich habe auch schon blau und grün gehabt. Mein Plan ist nun, dass ich die Farbe, die nicht schwarz ist, innerhalb der Palette (ich gehe davon aus, dass es eine Palette gibt) einfach auf weiß setze. Ich komme nur nicht drauf, wie das möglichst einfach geht. Ich habe mir schon mehrere Sachen angesehen, so z.B. ![]() Gibt es eine Möglichkeit, wie ich einfach von den beiden Farben im Bitmap die eine auf weiß setze? Gruß und Danke, Alex |
Re: Farbstich nach Bitmap-Operation
Erst Monochrome setzen, danach Pixelformat.
Delphi-Quellcode:
Bitmap.Monochrome := True;
Bitmap.Pixelformat := pf1Bit; |
Re: Farbstich nach Bitmap-Operation
Zitat:
Ich habe jetzt die Feststellung gemacht, dass die Function PlgBlt() offensichtlich Probleme hat. Die Bilder werden - wie schon beschrieben - um den Scanner nicht zu beeinflussen, sofort nach dem Scannen erstmal in einer TObjectList als TBitmap abgelegt. Erst nach dem Scannen des letzten Bildes startet das Drehe, Stretchen und Speichern. Ich hatte deshalb zuerst die TObjectList als Übeltäter im Verdacht. Aber auch wenn ich das Bild sofort nach dem Scannen verarbeite, klappt das Drehen nicht. Und das obwohl ich von TDelphiTwain ein TBitmap mit pf1bit geliefert bekomme. Ich habe aber die Feststellung gemacht, dass es auf die Reihenfolge ankommt. Wenn ich das Bild zuerst mit StretchBlt() bearbeite, dann klappt das Drehen anschließend mit PlgBlt(). Aber viel besser ist es, dass er sich dann auch pf1bit merkt und ich nichts mehr machen muss. Mein Bild ist und bleibt monochrom. ---> Keine Ahnung warum. Aber wichtig ist das Ergebnis. :cheers: Danke an alle Mitdenker. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 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