cuốn sách gpt4 ai đã làm

android - 制作位图时内存不足错误

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 19:16:09 25 4
mua khóa gpt4 Nike

Tôi đang tạo một ứng dụng máy ảnh có thể tổng hợp các bản xem trước và png của máy ảnh.

Tôi muốn lưu ảnh trong cuộc gọi lại onPictureTaken

Nguồn của tôi ở bên dưới

    public void onPictureTaken(byte[] data, Camera camera) {

// xem trước từ máy ảnh
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

// lớp phủ hình ảnh
Lớp phủ bitmapBmp = lớp phủ.getdrawCache();

// bản đồ beat trống
Trống bitmapBitmap =
Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(),
Bitmap.Config.ARGB_8888);

// tạo canvas
Canvas canvas = Canvas mới (blankBitmap);

//hình ảnh tổng hợp
canvas.drawBitmap(bitmap, null,New Rect(0, 0, bitmap.getWidth(),
bitmap.getHeight()), null);
canvas.drawBitmap(overlayBmp, null,New Rect(0, 0, bitmap.getWidth(),
bitmap.getHeight()), null);

Nhưng nó báo lỗi hết bộ nhớ, làm cách nào để giải quyết vấn đề này..?

05-20 15:13:49.114: E/AndroidRuntime(31647): NGOẠI LỆ TUYỆT VỜI: chính
20-05 15:13:49.114: E/AndroidRuntime(31647): java.lang.OutOfMemoryError
20-05 15:13:49.114: E/AndroidRuntime(31647): tại android.graphics.Bitmap.nativeCreate(Phương thức gốc)
20-05 15:13:49.114: E/AndroidRuntime(31647): tại android.graphics.Bitmap.createBitmap(Bitmap.java:605)
20-05 15:13:49.114: E/AndroidRuntime(31647): tại android.graphics.Bitmap.createBitmap(Bitmap.java:585)
20-05 15:13:49.114: E/AndroidRuntime(31647): tại com.example.firstCameraappli.MainActivity$2.onPictureTaken(MainActivity.java:103)
20-05 15:13:49.114: E/AndroidRuntime(31647): tại android.hardware.Camera$EventHandler.handleMessage(Camera.java:750)
20-05 15:13:49.114: E/AndroidRuntime(31647): tại android.os.Handler.dispatchMessage(Handler.java:99)
20-05 15:13:49.114: E/AndroidRuntime(31647): tại android.os.Looper.loop(Looper.java:137)
20-05 15:13:49.114: E/AndroidRuntime(31647): tại android.app.ActivityThread.main(ActivityThread.java:4514)
05-20 15:13:49.114: E/AndroidRuntime(31647): tại java.lang.reflect.Method.invokeNative(Native Method)
20-05 15:13:49.114: E/AndroidRuntime(31647): tại java.lang.reflect.Method.invoke(Method.java:511)
20-05 15:13:49.114: E/AndroidRuntime(31647): tại com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)

câu trả lời hay nhất

Hãy thử mã này ....

PictureCallback myPictureCallback_JPG = new PictureCallback()
{

@Ghi đè
public void onPictureTaken(byte[] data, Camera arg1) {

Lựa chọn BitmapFactory.Options;

opt = new BitmapFactory.Options();
opt.inTempStorage = byte mới[16 * 1024];
Tham số tham số = arg1.getParameters();
Kích thước kích thước = tham số.getPictureSize();

int chiều cao11 = size.height;
int width11 = size.width;
float mb = (width11 * Height11) / 1024000;

nếu (mb > 4f)
opt.inSampleSize = 4;
ngược lại nếu (mb > 3f)
opt.inSampleSize = 2;

// xem trước từ máy ảnh
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,opt);


}
}

Lấy hình ảnh ở dạng bitmap và sử dụng nó theo yêu cầu của bạn.

Về lỗi android - hết bộ nhớ khi tạo bitmap, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/16643747/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress