2 Stimmen

Wie kann ich in J2ME ein Bild in ein Byte-Array konvertieren?

Mein Bedarf ist folgendermaßen. Ich muss eine Datei vom Mobiltelefon über eine Dateiverbindung lesen, ein Thumbnail dieses Bildes erstellen und an den Server senden. Ich bin in der Lage, das Bild mit der FileConnection API zu lesen und auch in der Lage, das Thumbnail zu erstellen.

Nach der Erstellung des Thumbnails kann ich keine Methode finden, um das Bild wieder in byte[] zu konvertieren. Ist das möglich?

Code für die Umwandlung von Miniaturansichten:

    private Image createThumbnail(Image image) {
        int sourceWidth = image.getWidth();
        int sourceHeight = image.getHeight();

        int thumbWidth = 128;
        int thumbHeight = -1;

        if (thumbHeight == -1)
            thumbHeight = thumbWidth * sourceHeight / sourceWidth;

        Image thumb = Image.createImage(thumbWidth, thumbHeight);
        thumb.getGraphics();
        Graphics g = thumb.getGraphics();

        for (int y = 0; y < thumbHeight; y++) {
            for (int x = 0; x < thumbWidth; x++) {
                g.setClip(x, y, 1, 1);
                int dx = x * sourceWidth / thumbWidth;
                int dy = y * sourceHeight / thumbHeight;
                g.drawImage(image, x - dx, y - dy);
            }
        }

        Image immutableThumb = Image.createImage(thumb);

        return thumb;
    }

0 Stimmen

Sie müssen einen Code für die Konvertierung der Miniaturbilder angeben. Welche Art von Objekt haben Sie übrig? Welche J2ME/3rd party API verwenden Sie?

2voto

funkybro Punkte 8001

MIDP2.0's Image.getRGB() ist Ihr Freund. Sie können die ARGB-Pixeldaten als int-Array wie folgt erhalten:

int w = theImage.getWidth();
int h = theImage.getHeight();
int[] argb = new int[w * h];
theImage.getRGB(argb, 0, w, 0, 0, w, h);

Das int-Array kann dann als Parameter für Image.createRGBImage() oder in Desktop-Java, BufferedImage kann wie folgt verwendet werden:

BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
img.setRGB(0, 0, w, h, ints, 0, w);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X