/ / Android - webview.capturePicture()からbyte []に​​画像を変換してビットマップに戻す方法 - アンドロイド、ウェブビュー、バイトアレイ、画像、バイトアレイ出力ストリーム

アンドロイド、webview、bytearray、画像、bytearrayoutputstream - どのように画像をwebview.capturePicture()からバイト[]に変換し、ビットマップに戻す

私が手に入れた写真を撮ろうとしている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から常にnullビットマップを取得しています。

私がログインした場合も私は気づく。d(TAG、 "" + bos)期待どおりに長いバイトシーケンスが得られますが、bos.toByteArray()を実行した直後にbaに同じことを実行すると、次のような短い配列が得られます。 2b0a7c60

おそらくOutputStreamでbyteArrayに変換するのに問題があると思います。 capturePiture()メソッドがByteArrayOutputStreamではなくOutputStreamを返すためです。

どんな助けもありがとう。

回答:

回答№1の場合は7

以下の2つの関数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;
}