Как преобразовать строку в изображение (Java) - PullRequest
1 голос
/ 11 февраля 2012

У меня есть проблема с моим заявлением в деталях. - У меня есть сервлет Java получить данные от шлюза MMS (протокол MM7) Я получаю inputtream (содержимое изображения, содержимое сообщения), преобразованное в строку

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//String orgin = new String(byteArrayOutputStream.toByteArray(),"UTF-8");
String orgin = Streams.asString(request.getInputStream(), "ISO-8859-1");

Затем я подстроку orgin для содержимого изображения и преобразовать в base64 и сохранить в файл изображения но строка, которую я конвертирую в base64, не может быть сохранена в изображение, потому что эта ошибка

not a jpeg file 

Я печатаю строку base64 не начинается с / 9j, что означает не формат JPG

пожалуйста, предложите или приведите пример для меня

Лучший результат

lieang noob noob

извините за мой английский:)

Ответы [ 4 ]

2 голосов
/ 11 февраля 2012

Это как минимум часть вашей проблемы:

String orgin = Streams.asString(request.getInputStream(), "ISO-8859-1");

Вы не должны преобразовывать его в строку для начала. Это двоичные данные, верно? Так что читайте из потока как двоичные данные .

Теперь звучит так, как будто вы в основном хотите получить отдельные «куски» этих двоичных данных - но преобразование данных в строковый формат для начала не уместно, если только эти двоичные данные на самом деле не являются кодированным текстом .

0 голосов
/ 04 мая 2017

Используйте приведенный ниже код для строки в изображение здесь «происхождение» - это строка

import org.apache.commons.codec.binary.Base64;


byte[] imgByteArray = Base64.decodeBase64(origin);
FileOutputStream imgOutFile = new FileOutputStream("C:\\Workspaces\\String_To_Image.jpg");
imgOutFile.write(imgByteArray);
imgOutFile.close();
0 голосов
/ 30 июля 2012

Кодировка изображения очень проста.

Источник кодирования:

    Bitmap bm = BitmapFactory.decodeFile(picturePath);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            byte[] byteArray = baos.toByteArray();

            encodedImage = Base64.encodeToString(byteArray, Base64.DEFAULT);

    ImageView imageView = (ImageView) findViewById(R.id.imageView1);
            imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

Источник декодирования:

    byte[] decodedString;
        decodedString = Base64.decode(picture, Base64.DEFAULT);

        imageView1.setImageBitmap( BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length));
0 голосов
/ 11 февраля 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...