2013-02-25 17 views
10

Tôi có một bitmap đã tải mà tôi muốn chuyển đổi để đặt cấu hình thành Bitmap.Config.RGB_565. Có cách nào đơn giản để chuyển đổi một cấu hình Bitmap sau khi Bitmap đã được nạp vào bộ nhớ không? Ví dụ, dưới đây tôi có một bitmap được giải mã từ các tài nguyên ứng dụng, tuy nhiên, làm thế nào tôi sẽ chuyển đổi một đã được nạp Bitmap thành RGB_565? Tôi chắc chắn nó là một cái gì đó đơn giản, tuy nhiên, tôi là khá mới để làm việc với Bitmap và sau một vài giờ tìm kiếm trực tuyến, tiếc là tôi không thể tìm thấy những gì tôi cần đặc biệt.Chuyển đổi bitmap trong bộ nhớ sang bitmap bằng bitmap.Config.RGB_565

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inPreferredConfig=Bitmap.Config.RGB_565 
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.myphoto ,options); 

Trả lời

21

tôi đã không kiểm tra này, nhưng nó cũng làm việc:

private Bitmap convert(Bitmap bitmap, Bitmap.Config config) { 
    Bitmap convertedBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), config); 
    Canvas canvas = new Canvas(convertedBitmap); 
    Paint paint = new Paint(); 
    paint.setColor(Color.BLACK); 
    canvas.drawBitmap(bitmap, 0, 0, paint); 
    return convertedBitmap; 
} 

gọi các phương pháp như thế này:

Bitmap convertedBitmap = convert(bitmap, Bitmap.Config.RGB_565); 

Bạn có thể làm tất cả các loại biến đổi bổ sung như xoay, duỗi vv nếu bạn sử dụng drawBitmap với Ma trận.

13

Bạn cũng có thể thử điều này:

Bitmap converted = original.copy(Config.RGB_565, false); 

Từ documentation của Bitmap.copy():

cố gắng để làm cho một bitmap mới dựa trên kích thước của bitmap này, thiết lập mới cấu hình bitmap cho cấu hình được chỉ định, và sau đó sao chép các pixel của bitmap này vào bitmap mới. Nếu chuyển đổi không được hỗ trợ, hoặc cấp phát không thành công, thì điều này trả về NULL.

Nhìn qua mã nguồn gốc, bạn nên chuyển đổi tốt giữa bất kỳ giá trị nào của Bitmap.Config.