- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在 try catch 从 webview.capturePicture() 获取的图片以将其保存到 sqliteDatabase,我需要将图像转换为 byte[] 以便能够将其保存为 BLOB在我的表中,然后能够检索该 byte[] 并将其转换回位图。
这是我正在做的:
Picture p = webView.capturePicture();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
p.writeToStream(bos);
byte[] ba = bos.toByteArray());
然后我通过以下方式检索图像:
byte[] image = cursor.getBlob(imageColumnIndex);
Bitmap bm = BitmapFactory.decodeByteArray(image, 0, image.length);
我能够很好地检索 byte[],但我总是从 bitmapfactory 得到一个空位图。
我还注意到,如果我 log.d(TAG, ""+bos) 我会按预期得到一长串字节,但是如果我在执行 bos.toByteArray() 之后对 ba 做同样的操作,我只会得到一个短数组,像这样的东西:[B@2b0a7c60
我猜我在将 OutputStream 转换为 byteArray 时遇到了麻烦。这可能是因为 capturePiture() 方法返回的是 OutputStream 而不是 ByteArrayOutputStream?
如有任何帮助,我们将不胜感激。
最佳答案
使用下面两个函数convert::::
public String convertBitmapToString(Bitmap src) {
String str =null;
if(src!= null){
ByteArrayOutputStream os=new ByteArrayOutputStream();
src.compress(android.graphics.Bitmap.CompressFormat.PNG, 100,(OutputStream) os);
byte[] byteArray = os.toByteArray();
str = Base64.encodeToString(byteArray,Base64.DEFAULT);
}
return str;
}
public static Bitmap getBitMapFromString(String src) {
Bitmap bitmap = null;
if(src!= null){
byte[] decodedString = Base64.decode(src.getBytes(), Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
}
return bitmap;
}
更新::
//Convert Picture to Bitmap
private static Bitmap pictureDrawable2Bitmap(Picture picture){
PictureDrawable pictureDrawable = new PictureDrawable(picture);
Bitmap bitmap = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(),pictureDrawable.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawPicture(pictureDrawable.getPicture());
return bitmap;
}
关于Android - 如何将图片从 webview.capturePicture() 转换为 byte[] 并返回位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10273646/
我是 Android/Java 编程的新手,正在尝试从 webview.capturePicture() 获取位图。但是,在网页很长的情况下,图片的高度太大并且 createBitmap() 返回内存
我有一个问题。此时,WebView 的 capturePicture 已弃用。 我想问一下有没有办法替换这个功能。我的意思是它可以捕获整个 web View (不仅显示 View ) 谢谢 最佳答案
[Android 新手提醒] 我需要在 BitMap 中捕获 WebView 的内容,我遇到了一个奇怪的问题。我的方法是向 WebView 注册一个 WebViewClient,并在 onPageFi
我正在 try catch 从 webview.capturePicture() 获取的图片以将其保存到 sqliteDatabase,我需要将图像转换为 byte[] 以便能够将其保存为 BLOB在
我是一名优秀的程序员,十分优秀!