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:)
Warum nicht ein ByteArrayInputStream
mit ImageIO
verwenden?
Weitere Informationen zu ImageIO finden Sie in der API .
%Vor% bi.setRGB
benötigt einen 4 Byte "int" Wert, der ARGB 0xAARRGGBB
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).
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.
Sie könnten versuchen, Ihre for-Schleifen durch diese
zu ersetzen %Vor%Dinge, die mit Ihrem Code schief gelaufen sind:
Normalerweise schreiben Sie Zeile für Zeile, nicht Zeile für Zeile
Sie müssen 3 Bytes lesen und ein int erstellen, anstatt die Bytes direkt in Ihr Pixel (TYPE_INT_ARGB)
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 =)
Tags und Links java image flex jpeg flex-mobile