AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Farbstich nach Bitmap-Operation
Thema durchsuchen
Ansicht
Themen-Optionen

Farbstich nach Bitmap-Operation

Ein Thema von Schwedenbitter · begonnen am 19. Apr 2009 · letzter Beitrag vom 23. Apr 2009
Antwort Antwort
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Farbstich nach Bitmap-Operation

  Alt 19. Apr 2009, 22:03
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 TDelphiTwain ein. Und zwar standardmäßig immer in Schwarzweiß und mit 200 dpi. Wenn der Sacnner das kann, gibt es kein Problem.
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. das hier. Ich verstehe es leider nicht.

Gibt es eine Möglichkeit, wie ich einfach von den beiden Farben im Bitmap die eine auf weiß setze?

Gruß und Danke, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Farbstich nach Bitmap-Operation

  Alt 20. Apr 2009, 16:24
Erst Monochrome setzen, danach Pixelformat.
Delphi-Quellcode:
Bitmap.Monochrome := True;
Bitmap.Pixelformat := pf1Bit;
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Farbstich nach Bitmap-Operation

  Alt 23. Apr 2009, 09:06
Zitat von Blup:
Erst Monochrome setzen, danach Pixelformat.
Delphi-Quellcode:
Bitmap.Monochrome := True;
Bitmap.Pixelformat := pf1Bit;
Danke! Grundsätzlich funktioniert das auch. Allerdings ist das Ergebnis von der Qualität her nicht ganz das, was ich brauche.

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.

Danke an alle Mitdenker.
Alex Winzer
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:25 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