Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > [Java2ME] Перевод Image в byte[]


Автор: Weman 18.11.2010, 23:58
Здравствуйте! Подскажите, пожалуйста! 

Стоит задача: есть устройство1(клиент) и устройство2(сервер). Надо передать по сети картинку (64х64) с устройства1 на устройство2, там его обработать и вернуть обратно на устройство1. Подскажите, пожалуйста, как осуществить перевод изображения типа Image в массив byte[] и потом из byte[] обратно перевести в Image. Изображение в формате .PNG

Заранее спасибо! Пишу на Java2ME

Автор: oxigen 19.11.2010, 11:33
Нашел у себя такой код:

Image->byte[]
Код

 Image image;
        ....
        height = image.getHeight();
        width = image.getWidth();
        int[] imgRgbData = new int[width*height];

        image.getRGB(imgRgbData, 0, width, 0, 0, width, height);
           
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        DataOutputStream dout = new DataOutputStream(bout);
        dout.writeInt(width);
        dout.writeInt(height);
        dout.writeInt(imgRgbData.length);
        for (int i=0; i<imgRgbData.length; i++) {
            dout.writeInt(imgRgbData[i]);
        }
        dout.flush();
        dout.close();
        byte[] data = bout.toByteArray();
        int recid = imagesRS.addRecord(data, 0, data.length);


byte[]->Image
Код

                byte[] rec;
                ....
                ByteArrayInputStream bin = new ByteArrayInputStream(rec);
                DataInputStream din = new DataInputStream(bin);
              
                int width  = din.readInt();
                int height = din.readInt();
                int length = din.readInt();

                int[] rawImg = new int[width*height];

                for (i = 0; i < length; i++) {
                    rawImg[i] = din.readInt();
                }
                Image img = Image.createRGBImage(rawImg, width, height, false);
                din.close();
                bin.close();

Автор: Weman 19.11.2010, 12:55
oxigen, спасибо! Попробую прикрутить к своей проге)

Автор: Weman 19.11.2010, 22:13
Взял кусочек из кода. Получается что картинка преобразуется из типа Image в целочисленный массив типа Int[height*width]. 
Вот код:

Код

        int height = img.getHeight();
        int width = img.getWidth();
        int[] imgRgbData = new int[width*height];
        try 
        {
            //получаем цвет в представлении ARGB и сохраняем его в массиве данных imgRgbData
            img.getRGB(imgRgbData, 0, width, 0, 0, width, height);
        } 
        catch (Exception e) 
        {
            System.err.println("Convert images error");
        }


Подскажите,пожалуйста, как целочисленный массив int[] перевести в строку символов String. Спасибо!

Автор: anvarga 25.11.2010, 08:29
как сохранить можно в mysql  байта использование на php?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)