2010-12-31 30 views
13

Tôi đang mở hình ảnh png vào Bitmap, thực hiện một số sửa đổi và sau đó lưu nó vào đĩa dưới dạng jpg. Trong trường hợp png có một số vùng trong suốt, chúng được lưu thành màu đen. Có cách nào để thay đổi hành vi mặc định này để hình ảnh được lưu với nền màu khác như màu trắng?Cách thay đổi màu nền của bitmap trong suốt đã lưu

Cảm ơn

Trả lời

33

Bạn có thể vẽ nó vào một bitmap mới, ví dụ:

Bitmap newBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), image.getConfig()); 
Canvas canvas = new Canvas(newBitmap); 
canvas.drawColor(Color.WHITE); 
canvas.drawBitmap(image, 0, 0, null); 

sau đó lưu newBitmap thay

+2

Khi tôi đang lưu hình nền ... màu nền Tôi đang bị đen. Bất kỳ cách nào khác để thay đổi .. Cảm ơn trước .. –

+0

Bất kỳ cách nào để thay đổi màu nền đen? – Homen

+0

@RahulBaradia bạn có thể kiểm tra câu trả lời của tôi nó có thể giúp bạn. –

0

Để lưu một hình ảnh và giữ vùng trong suốt của nó bạn không thể lưu nó ans JPG, bạn phải lưu nó dưới dạng PNG, và không chỉ có vậy, nhưng thiết lập các thiết lập của setHasAlpha() true tRƯỚC tiết kiệm hình ảnh, vì vậy nó sẽ là như thế:

trước khi lưu:

mBitmap.setHasAlpha(true); 

Và khi lưu, lưu hình ảnh dưới dạng PNG bằng cách sử dụng bất kỳ phương pháp nào bạn đang sử dụng để lưu, ví dụ:

File file = new File(folderDir, name); 
try { 
    file.createNewFile(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
FileOutputStream out = new FileOutputStream(file); 
mBitmap.setHasAlpha(true); 
mBitmap.compress(Bitmap.CompressFormat.PNG, 80, out); 
out.flush(); 
out.close(); 
Các vấn đề liên quan