Конвертировать Java Byte [] в VB.NET MemoryStream - PullRequest
0 голосов
/ 15 февраля 2011

Мы разрабатываем приложение для Android (Java), которое считывает изображение, кодирует байты в base64 и отправляет их через HTTP (через GET) на веб-сервис, написанный на VB.NET.

На стороне .NET, они используют это:

Dim Pix As Image
Pix = Image.FromFile("C:\Users\Public\Pictures\Sample Pictures\Tree.jpg")

Dim ms As New MemoryStream
Pix.Save(ms, ImageFormat.Jpeg)
Dim ImByte() As Byte = ms.GetBuffer
ms.Close()

Звучит отлично.

Как мне передать им правильную строку, чтобы правильно декодировать изображение из кодировки Java (без знака) в декодирование .NET (со знаком))?

Большое спасибо Николас.

1 Ответ

2 голосов
/ 15 февраля 2011

Первая ошибка: вы используете GetBuffer(), что потенциально может быть слишком большим.Вместо этого используйте ToArray().

На стороне Java просто используйте любой декодер Base64, такой как Apache Commons Codec one .Не беспокойтесь о подписанности байтов - Base64 эффективно делает это без проблем для вас.

Это предполагает, что клиент веб-сервиса не выполняет это автоматически для вас, конечно ... если вашвеб-сервис «объявляет» байтовый массив с использованием base64, он может быть просто автоматическим.

Дополнительный вопрос: зачем вообще загружать изображение как изображение?Почему бы просто не использовать:

Dim ImByte() As Byte = File.ReadAllBytes("C:\Users\...\Tree.jpg")

?

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