Динамическое преобразование изображения в двоичный файл и наоборот - PullRequest
4 голосов
/ 13 января 2012

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

Я хочу отправить эти преобразованные двоичные данные на другое устройство или на веб-сервер.

Какой механизм лучше всего сделать это ??1007*

Ответы [ 4 ]

9 голосов
/ 13 января 2012

Изображение в Bitmap, затем используйте следующий код для преобразования этого изображения в двоичный файл. Используя следующий код

Bitmap photo;// this is your image.
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

Чтобы получить изображение из двоичного файла, используйте следующий образец:

Bitmap bMap = null;

bMap = BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
6 голосов
/ 17 января 2012

Я нашел хороший пример для загрузки изображения на сервер.

  • создайте растровую переменную, прежде чем что-либо делать.
  • переменная для установки имени изображения на SD-карту.
  • эта переменная, вы должны указать путь к файлу, это ваше дело.
  • sendData - имя функции, для ее вызова вы можете использовать что-то вроде sendData(null).
  • не забудьте обернуть его в пробный улов.

private Bitmap bitmap;
public static String exsistingFileName = "";

public void sendData(String[] args) throws Exception {
    try {
        HttpClient httpClient = new DefaultHttpClient();
        HttpContext localContext = new BasicHttpContext();

        // here, change it to your php;
        HttpPost httpPost = new HttpPost("http://www.myURL.com/myPHP.php");
        MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
        bitmap = BitmapFactory.decodeFile(exsistingFileName);

        // you can change the format of you image compressed for what do you want;
        // now it is set up to 640 x 480;
        Bitmap bmpCompressed = Bitmap.createScaledBitmap(bitmap, 640, 480, true);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();

        // CompressFormat set up to JPG, you can change to PNG or whatever you want;
        bmpCompressed.compress(CompressFormat.JPEG, 100, bos);
        byte[] data = bos.toByteArray();

        // sending a String param;
        entity.addPart("myParam", new StringBody("my value"));

        // sending a Image;
        // note here, that you can send more than one image, just add another param, same rule to the String;
        entity.addPart("myImage", new ByteArrayBody(data, "temp.jpg"));
        httpPost.setEntity(entity);
        HttpResponse response = httpClient.execute(httpPost, localContext);
        BufferedReader reader = new BufferedReader(new InputStreamReader(   response.getEntity().getContent(), "UTF-8"));
        String sResponse = reader.readLine();

    } catch (Exception e) {
        Log.v("myApp", "Some error came up");
    }
}
2 голосов
/ 13 января 2012

Попробуйте. Пусть img содержит растровое изображение

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img, "png", baos);
baos.flush();
byte[] imageInByte = baos.toByteArray();
baos.close();

imageInByte теперь содержит байтовые данные растрового изображения

Для преобразования в обратном направлении

Bitmap bp = BitmapFactory.decodeByteArray(imgArray, 0,imgArray.length);

Надеюсь, это поможет вам

1 голос
/ 13 января 2012

, если вы хотите отправить на веб-сервер, используйте HttpPost запрос, используя HttpClient

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...