我有一個 ImageView,我需要創建它并獲取位圖并將其轉換為字串,因為我需要將影像發送到 charquopy 進行處理。當我嘗試將影像作為字串獲取時,出現以下錯誤:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference
在這一行,特別是: imageString = getStringImage(bitmap);
與我的問題相關的整個代碼剪斷了:
mImageView = (ImageView) findViewById(R.id.frame_image);
@Override
protected void onCreate(final Bundle savedInstanceState) {
String imageString = "";
BitmapDrawable drawable;
Bitmap bitmap;
drawable = (BitmapDrawable)mImageView.getDrawable();
bitmap = drawable.getBitmap();
imageString = getStringImage(bitmap); // Error occurs in this line
}
幀影像 XML:
<ImageView
android:id="@ id/frame_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/camera_view"
android:layout_alignLeft="@id/camera_view"
android:layout_alignRight="@id/camera_view"
android:layout_alignTop="@id/camera_view" />
輸出:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference
我想知道為什么它回傳一個空指標,因為 Imageview 似乎被正確呼叫。
uj5u.com熱心網友回復:
您可以在畫布上繪制影像視圖并像這樣使用它創建位圖
ImageView mImageView = (ImageView) findViewById(R.id.frame_image);
Bitmap bitmap = Bitmap.createBitmap(mImageView .getWidth(), mImageView .getHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
mImageView.draw(canvas);
ByteArrayOutputStream baos=new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,100, baos);
byte [] b=baos.toByteArray();
String imageAsString =Base64.encodeToString(b, Base64.DEFAULT);
//Upload imageAsString
uj5u.com熱心網友回復:
你可以試試這個方法
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Base64;
import java.io.ByteArrayOutputStream;
public class ImageUtil
{
public static Bitmap convert(String base64Str) throws IllegalArgumentException
{
byte[] decodedBytes = Base64.decode(
base64Str.substring(base64Str.indexOf(",") 1),
Base64.DEFAULT
);
return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);
}
public static String convert(Bitmap bitmap)
{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
return Base64.encodeToString(outputStream.toByteArray(), Base64.DEFAULT);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364479.html
上一篇:為什么推薦的`getExternalStorageState()`代替不推薦使用的`getExternalStorageDirectory()`不能正常作業?
