Image: einzelne Pixel auslesen
-
Ich möchte auf die einzelnen Pixel eines Bildes zugreifen, wenn ich es per LoadFromFile geladen habe (lesen und als HEX extrahieren). Das ganze darf aber nicht über Canvas laufen, da das Bild nur monochrom ausgegeben wird.
-
mindestens ein byte pro pixel wird glaub ich immer verschwendet. also sollte die canvas methode gehen.
es gibt aber noch die möglichkeit über picture->bitmap zu gehen. das ist ein interner buffer, den du dann am ende noch mit canvas->draw anzeigen solltest.
die tipps geb ich, weil ich mit delphi erfahrung hab und c++ sonst nur konsolenmäßig progge.
-
Hoffmann_Till schrieb:
Das ganze darf aber nicht über Canvas laufen, da das Bild nur monochrom ausgegeben wird.
Was hat das miteinander zu tun?
Auf die Pixel kannst du auch per TBitmap::ScanLine zugreifen.
-
Ich will die 24Bit Werte des Images auslesen und mit einem Wert (TrackBar) multiplizieren.
Dann wird das Bild monochrom ausgegeben.
-
Wie Jansen geschrieben hat, mittels scnaline. Hier ein Beispielcode:
Byte* ptr; for (int y = 0; y < smallImg->Height; y++) { ptr = (Byte *)smallImg->ScanLine[y]; for (int x = 0; x < smallImg->Width; x++) ptr[x] = (Byte)colorValue; }
-
[cpp] Byte* ptr;
colorValue;
for (int y = 0; y < smallImg->Height; y++)
{
ptr = (Byte *)smallImg->ScanLine[y];
for (int x = 0; x < smallImg->Width; x++)
}[/cpp]
Danke für das Beispiel, aber was ist colorValue???
-
Ich würde mal sagen, genau da musst du hinschreiben, was du mit dem Pixel überhaupt machen willst...
-
das ganze geht aber leider nur bei bitmaps mit 256 farben.
Ich muss das ganze mit schwarz - weiss - Bitmaps machen.
wass nehme ich anstatt byte ptr ??