Wie lese ich die Pixel aus einer PNG-Datei?
Weiß ich, wie man ein Bildschirmfoto zu erstellen, indem Sie mithilfe von Roboter -, Windowtester oder FEST. Ich weiß auch, wie zu Lesen, ein pixel aus dem Bildschirm durch die Verwendung von Roboter.
int x = 10;
int y = 10;
Color px = getPixelColor(int x, int y);
Aber ich weiß nicht, wie zu Lesen, ein pixel eines Bildes, die bereits erfasst. Ich Plane für den Vergleich eines aktuellen Bildes mit einem Bild aus Datei. Sagen wir beide sind PNG. Gibt es irgendwelche frameworks, die ich verwenden können, um Bilder zu vergleichen pixel für pixel?
- Welche Sprache?
- sorry, vergaß hinzuzufügen, JAVA...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist dies in Java? Wenn dem so ist, können Sie
ImageIO.read( "yourImage.png" )
zu bekommenBufferedImage
. Das wird einegetData()
Methode, die Ihnen eineRaster
Objekt, auf dem Sie anrufen könnengetPixel
. Sehen linkgetRGB(x,y)
aufBufferedImage
.Sollte dies funktionieren:
Dann können Sie zu Fuß durch die Pixel und vergleichen Sie mit den Bildern pixel für pixel mit dieser:
Können Sie Lesen, image-Datei: Lesen/Laden eines Bildes.
Und dann bekommen Sie Farbe mit
getRGB
Methode.In C/C++, wenn Sie bequem sind, die eine minimale version von Windows, ist es relativ leicht, Sie können die GDI+ verwenden, um das Bild laden und zeichnen Sie es in ein Speicher-bitmap, dann können Sie den zurückgegebenen Zeiger zu Holen Sie sich die pixel-Daten.
Verwenden
GdiplusStartup()
undGdiplusShutdown()
zu initialisieren und uninitialise GDI+.Verwendung ein GDI+
Image
Objekt, mit der überladung, die nimmt einen Dateinamen, um das Bild laden, verwenden Sie die MethodenGetWidth()
undGetHeight()
eineBITMAPINFO
Struktur und dieCreateDIBSection()
GDI-Funktion erstellen Sie eine bitmap Speicher.Dann verwenden
CreateCompatibleDC()
erstellen Sie einen Gerätekontext für die bitmap undSelectObject()
wählen Sie die bitmap in diesen Gerätekontext.Dann verwenden Sie ein GDI+
Graphics
Objekt, mit der überladung, die nimmt einen Gerätekontext, und seineDrawImage()
Methode, mit der überladung, die nimmtx
,y
,width
undheight
, zeichnen das Bild der bitmap-Gerätekontext.Danach, Sie können get - /set-pixel-Daten mit den zurückgegebenen Zeiger von
CreateDIBSection()
.Wenn Sie fertig sind, verwenden Sie
DeleteDC()
um loszuwerden, das bitmap-Gerätekontext VOR der VerwendungDeleteObject()
um loszuwerden, das bitmap. GDI+ Bild-Objekte können auch verwendet werden, zu speichern, Bilder in einem unterstützten format auch PNG.