Rohdaten im JPEG-Format - JAVA

9

Ich habe versucht, Rohdaten ByteArray in JPEG-Format mit JPEGEncoder zu konvertieren, aber es ist zu langsam in mobilen (ich habe es auf Handy getestet). Wie kann ich das gleiche in Java tun? Ich werde Rohdaten-Byte an Java senden und es mit Java in JPEG kodieren - ich habe einige von ihnen als JpegImageEncoder unter com.sun. * Versucht, aber es ist in jdk7 abgewertet. Wie kann ich dies in Java tun? Oder irgendwelche Vorschläge von Flex Mobile Entwicklern, die so etwas getan haben?

UPDATE: Ich habe den folgenden Code ausprobiert, aber ich bekomme ein seltsames Ergebnis:

%Vor%

ERGEBNIS:

PS: Es sollte mein Foto sein, übrigens:)

    
Zaur Guliyev 25.09.2012, 04:18
quelle

4 Antworten

1

Warum nicht ein ByteArrayInputStream mit ImageIO verwenden?

Weitere Informationen zu ImageIO finden Sie in der API .

%Vor%     
r0estir0bbe 28.09.2012 19:48
quelle
0

bi.setRGB benötigt einen 4 Byte "int" Wert, der ARGB 0xAARRGGBB

ist

Sie erhöhen dann Ihren Byte-Offset-Zähler um 1, so dass das nächste Pixel 0xRRGGBBAA, dann 0xGGBBAARR usw. erhält.

Angenommen, das byte [], das übergeben wird, hat das richtige 4-Byte-Format, müssen Sie entweder jedes Mal 4 addieren, oder ändern, was Sie an int [] übergeben (was eigentlich korrekter wäre) , da es tatsächlich int-Werte enthält).

    
Wyzird42 16.03.2013 21:38
quelle
0

Hi, ich hatte das selbe Problem, ich habe die Werte für Breite und Höhe so eingestellt, dass hardcoded (300,300) ähnliche Ausgaben verursacht. Dann habe ich auf diesen Link verwiesen. Rohe Byte [] zu JPEG-Bild Sie können den Bitmap-Teil in ignorieren es. Ich gehe davon aus, dass Sie auch die Werte für Breite und Höhe fest codieren.

    
Swapnil 02.06.2014 12:39
quelle
0

Sie könnten versuchen, Ihre for-Schleifen durch diese

zu ersetzen %Vor%

Dinge, die mit Ihrem Code schief gelaufen sind:

  1. Normalerweise schreiben Sie Zeile für Zeile, nicht Zeile für Zeile

  2. Sie müssen 3 Bytes lesen und ein int erstellen, anstatt die Bytes direkt in Ihr Pixel (TYPE_INT_ARGB)

  3. zu schreiben

Dieser Link erklärt TYPE_INT_ARGB: Format von TYPE_INT_RGB und TYPE_INT_ARGB

Ich hoffe, das hilft ein bisschen und ist nicht zu verwirrend =)

    
hackie 03.08.2014 00:23
quelle

Tags und Links