Konvertieren einer 32Bit Png auf eine 24-Bit-Bitmap - Stapelüberlauf

Was ich versuche zu verarbeiten bei einer Pixelebene ein heruntergeladenes Bild zu tun, in einer VB6-Konsolenanwendung, das sind die Schritte zur Zeit

BITMAPFILEHEADER
BITMAP






BMPData

I kann dann durch die Schleife BMPData und Gewinnung und Verarbeitung der benötigte Wert. Wenn ich versuche, das Bild zu laden, ohne sie zunächst zu einem 24-Bit-Bitmap in Farbe zu speichern, erhalte ich einen nicht genügend Arbeitsspeicher Fehler in VB (Laufzeitfehler 7) und die BMPInfoHeader.biSizeImage ist sehr groß compaired die Größe ist es nachdem er mit wurde über Farbe gespeichert.

Ich habe versucht, mit ImageMagick-6.9.0-Q16 Anzeige und GraphicsMagick-1.3.21-Q8 zu konvertieren, aber diese scheinen nur die konvertierte Datei zu vermasseln.

Jeder bekam jede Idee?

Ich habe alles versucht, ich weiß, ImageMagick zu bekommen eine 24-Bit-Farbe BMP aus einem Graustufen-32-Bit-PNG-Datei zu erstellen, einschließlich:

  • +matt den Alphakanal zu entfernen,
  • -Typ Truecolor eine Farbausgabe zu zwingen
  • BMP4: output.bmp eine BMP4 zu zwingen
  • BMP3: output.bmp eine BMP3 zu zwingen
  • BMP-2: output.bmp ein BMP-2 zu zwingen
  • -16 Farben | 256 zu zwingen, Anzahl der Farben
  • -Tiefe 8 | 24 die Bittiefe einzustellen
  • durch PPM-Format geben und von PNG-Einstellungen loswerden zurück
  • Schreiben über NetPBM des ppm2bmp / ​​ppmtobmp






und alles ohne Erfolg. Ich kann nicht ImageMagick eine 24-Bit-Farbe BMP aus einem grauen 32-Bit-PNG zu erstellen.

Ich weiß nicht, ob das für Sie arbeitet, wenn ja, gut, hier zu stoppen. Wenn nicht, weiter.

Das einzige, was ich vorschlagen kann, ist, dass man PPM-Format verwenden, das noch einfacher als BMP ist für Sie zu lesen

Das wird Ihnen ein P6 Typ PPM Bild erhalten, wie hier beschrieben. Wenn Sie das noch einfacher ASCII P3 Version möchten, verwenden Sie diesen Befehl

und Ihr Bild wird wie folgt aussehen:

Wow, vielen Dank für all die Zeit und Mühe, die Sie getroffen haben, um zu versuchen und eine funktionierende Lösung für mich, ich habe die oben versucht, und wahrscheinlich derjenige, der ist funktioniert

konvertieren yourImage.png -compress keine output.ppm

Ich hätte einige weitere Tests tun, um die Werte zu überprüfen, aber ich denke, dass es funktionieren würde.

Ich finde, hat einen Weg, es zu tun, ich xmlhttp verwenden Sie das Bild über einen adodb Stream zum Download und fand, dass ich das Bild in einer Reihe von verschiedenen anderen Formaten als bmp retten konnte, so dass ich sah auf das Format der verschiedenen Bildformate und festgestellt, dass das tif-Format sieht vielversprechend aus Datei und einige Code online zu finden, die Microsoft Image Acquistion Bibliothek verwendet, um die tif-Datei zu manipulieren.

Durch das Laden eines WIA.Vector es die tif-Datei in eine WIA.ImageFile und anwenden, können Sie dann die Pixel im Bild itterate und die rohen Farbwerte erhalten, indem Sie die Werte Addition von Säule und unter Berücksichtigung, dass Sie Spalte, die alle weiß sind, wobei diese nur eine leere Spalte konnte ich einen eindeutigen Wert pro Zeichen erzeugen.

Danke für deine Hilfe.







In Verbindung stehende Artikel