【发布时间】:2014-06-27 04:01:31
【问题描述】:
在 Android 上,我有时会对图像执行以下操作。
它永远不会超过 bitmapPicture.compress 行 - 它似乎只是坐在那里挂起。
上面我得到字节数的行返回 40000。
我从来没有看到压缩完成,或者“压缩”之后的任何其他输出。
try {
final int COMPRESSION_QUALITY = 100;
String encodedImage;
ByteArrayOutputStream byteArrayBitmapStream = new ByteArrayOutputStream();
Log.e("Error","compress" + bitmapPicture.getByteCount());
bitmapPicture.compress(Bitmap.CompressFormat.PNG,
COMPRESSION_QUALITY, byteArrayBitmapStream);
Log.e("Error","compress done");
byte[] b = byteArrayBitmapStream.toByteArray();
Log.e("Error","bytear");
encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
Log.e("Error","JSONDATA encodedImage Returned");
return encodedImage;
} catch (Exception e) {
ErrorLogger.AddError(e.getMessage(), 199);
Log.e("Error","JSONDATA Error"+e.getMessage());
return null;
}
【问题讨论】:
-
我看到了同样的事情。你有没有找到解决办法?
-
不幸的是我没有,我创建了一个线程和一个看门狗类,如果它花费的时间比预期的要长,我会杀死线程并报告错误。不优雅,但无法继续处理它
-
添加了一个赏金 - 看看我们能不能弄明白...
-
你的 ByteArrayOutputStream 是空的,它如何返回任何图像?首先将图像流分配给它,然后将它传递给它进行压缩。
-
@jitainsharma -
Bitmap.compress预计将在返回时用字节填充 ByteArrayOutputStream。