Edit 2: из результата я получил в своем первом редактировать, в нижней части поста, вопрос находится где-то на этой линии или ниже:. imageEncodedSigneAgent = Base64.encodeToString(byteSigneAgent,Base64.NO_WRAP);
" /редактироватьЗапись Bitmap в сообщение MIME
I . попытался написать растровое изображение в сообщении MIME, как Base64 строки в PNG формате к сожалению, сообщение считается нуль (окна просмотра не может прочитать его, говорит размер 0kb)
Мой код:
Bitmap bitmapSigne = BitmapFactory.decodeFile(fileSigne.getAbsolutePath());
if (Params.tagFgDebug && fgDebugLocal){Log.i(Params.tagGen, tagLocal + "createEMLInt - bitmapSigne width = " + bitmapSigne.getWidth());};
ByteArrayOutputStream baos = new ByteArrayOutputStream(bitmapSigne.getByteCount());
if (!bitmapSigne.compress(Bitmap.CompressFormat.PNG, 100, baos)) {
new TException(tagLocal, "Compress bitmapSign == ", "false");
}
byte[] byteSigne = baos.toByteArray();
if (Params.tagFgDebug && fgDebugLocal){Log.i(Params.tagGen, tagLocal + "createEMLInt - byteSigne size = " + byteSigne.length);};
String imageEncodedSigne = Base64.encodeToString(byteSigne,Base64.NO_WRAP);
if (Params.tagFgDebug && fgDebugLocal){Log.i(Params.tagGen, tagLocal + "createEMLInt - imageEncodedSigne size = " + imageEncodedSigne.length());};
mime.append(imageEncodedSigne);
mime.append("\r\n");
Это делает строки base64 в моем сообщении MIMI, но это ca не читаться и, может быть, немного короче. Я думаю, что это могут быть метаданные вокруг PNG (из того, что я прочитал после того, как я его расшифровал).
Я проверил, чтобы сохранить изображения непосредственно в файл, и он прекрасно работает:
// test to retrieve BitMap as PNG
String signePath2 = Baseline.strSdExternalPath + File.separator + Params.MIF_REP;
File file = new File(signePath2, "sign.png");
FileOutputStream fOut = new FileOutputStream(file);
bitmapSigne.compress(Bitmap.CompressFormat.PNG, 85, fOut);
fOut.flush();
fOut.close();
// test to retrieve BitMap as PNG
я правильно получить изображение Обращает ранее.
Я также попытался (идея от другого SO вопрос: Converting bitmap to byte array, to string, then all the way back), чтобы переконвертировать строку, в растровое изображение и оно не :(
byte[] newImageBytes = imageEncodedSigne.getBytes();
// Convert byte[] back to bitmap
Bitmap bitmapReconverted = BitmapFactory.decodeByteArray(newImageBytes, 0, newImageBytes.length);
File fileReconverted = new File(signePath2, "signReConverted.png");
fOut = new FileOutputStream(fileReconverted);
bitmapReconverted.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
Что я здесь отсутствует Почему я не правильно получить байт? данные и получить читаемую строку в base64?
Любой помощь ценит!
Я использовал Base64.DEFAULT раньше, чтобы не лучших результатов. Я прочитал несколько пост и один связан ближе всего к тому, что я пытаюсь сделать , к сожалению, его проблема была с плохим использование '' equalTo
EDIT: Так что я пытался сделать Bitmap -> байт [] -> Bitmap и она работала:
Bitmap bitmapReconverted = BitmapFactory.decodeByteArray(byteSigne, 0, byteSigne.length);
File fileReconverted = new File(signePath2, "signReConverted.png");
fOut = new FileOutputStream(fileReconverted);
bitmapReconverted.compress(Bitmap.CompressFormat.PNG, 85, fOut);
fOut.flush();
fOut.close();
Edit 3: результат MIME для документации цели!
Content-Type: image/png
Content-Disposition: form-data; имя = "тело", имя файла = "20150601.190623_00008_SIGN.PNG" Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAOYAAABuCAIAAAC86/hZAAAA
сторона примечание: 'новое TException (...)', по-видимому, ничего не делает. Возможно, вы имеете в виду 'throw new TException (...)' – njzk2
Да, да. Вы не можете это знать, но это обычная оболочка Exception, может быть, это плохой дизайн, чтобы не использовать метод «throw». – Poutrathor
это, возможно, не очень хороший дизайн. Это не ясно из отправленного кода, но может быть, что создание объекта не полезно. Кроме того, создание подкласса исключения помогает с его улавливанием. И ключевое слово 'throw' мгновенно объясняет, что происходит. – njzk2