Ich scanne Dokumente in JPG-Bilder. Der Scanner muss alle Seiten in Farbe oder alle Seiten in Schwarz-Weiß scannen. Da viele meiner Seiten farbig sind, muss ich alle Seiten in Farbe scannen. Nach dem Scannen möchte ich die Bilder mit .Net untersuchen und versuchen zu erkennen, welche Bilder schwarz-weiß sind, damit ich diese Bilder in Graustufen umwandeln und Speicherplatz sparen kann.
Weiß jemand, wie man ein Graustufenbild mit .Net erkennt?
Bitte lassen Sie es mich wissen.
1 Stimmen
Die Überprüfung des Bildtyps wird nicht ausreichen, da dieser auf 24 oder 32 Bit eingestellt ist (da Sie in Farbe scannen). Wahrscheinlich müssen Sie jedes einzelne Pixel überprüfen. Wenn R == G == B in allen Pixeln ist, handelt es sich um ein Graustufenbild, andernfalls ist es wahrscheinlich ein Farbbild.
1 Stimmen
Ein Gedanke: Auch wenn der Scanner theoretisch R == G == B liefert, ist es möglich, dass es bei der JPEG-Kompression einige Pixel gibt, bei denen dies nur fast der Fall ist? Bedenken Sie, dass JPEG ein verlustbehafteter Komprimierungsalgorithmus ist. Vielleicht nimmt sich JPEG einige Freiheiten bei den Farben der nahegelegenen Pixel. Aber ich gestehe, ich bin kein JPEG-Experte. Aber ich würde wissen wollen, wie es funktioniert, bevor ich mich auf R == G == B verlasse.
0 Stimmen
Ja, ich würde mich nur ungern auf genau r==g==b verlassen, denn selbst wenn jpg keine Verfälschungen vornimmt (und ich wette, das tut es), müssten Ihr Scanner und Ihr Original ebenfalls perfekt sein, was ich in vielen Fällen für unwahrscheinlich halte.
0 Stimmen
Das stimmt. Ich hatte nicht an die Pixelabweichungen gedacht (die natürlich beim Scannen auftreten). Interessantes Problem.
1 Stimmen
@Dave: Ich sollte es früher getan haben, aber... heute Morgen in meine Antwort eingefügt ein Code-Snippet, das tatsächlich die höchste Pixel-RGB-Delta eines Bildes zurückgeben wird. Wie Sie das Delta interpretieren, bleibt Ihnen überlassen. Sie können auf 0 (echte und vollständige Graustufen) oder etwas größer als Null testen, um einige Farbinformationen zu berücksichtigen.