Tôi đang cố gắng kết hợp hai hình ảnh cùng với Android, sử dụng chế độ hòa trộn giống như Multiply.Trộn hai hình ảnh cùng với nhân và% opacity
// Prepare -------------------------------
// Create source images
Bitmap img1 = ...
Bitmap img2 = ...
// Create result image
Bitmap result = ...
Canvas canvas = new Canvas();
canvas.setBitmap(result);
// Get proper display reference
BitmapDrawable drawable = new BitmapDrawable(getResources(), result);
ImageView imageView = (ImageView)findViewById(R.id.imageBlend1);
imageView.setImageDrawable(drawable);
// Apply -------------------------------
// Draw base
canvas.drawBitmap(img1, 0, 0, null);
// Draw overlay
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY));
paint.setShader(new BitmapShader(img2, TileMode.CLAMP, TileMode.CLAMP));
canvas.drawRect(0, 0, img2.getWidth(), img2.getHeight(), paint);
Điều này có tác dụng, nhưng tôi không kiểm soát được "số tiền" nhân được thực hiện - nó luôn là một chuyển hoàn toàn. Lý tưởng nhất, một 0% nhân sẽ giống như hình ảnh cơ sở (img1) mà không có bất kỳ thay đổi nào, nhưng 100% nhân sẽ là kết quả tôi nhận được với mã ở trên.
paint.setAlpha()
dường như không hoạt động cho việc này.
Bất kỳ cách nào khác để đặt độ mờ% của lớp 'mới'?
P.S. Có một số phương pháp để làm cho nhân làm việc với điều này tôi đoán (bằng cách sử dụng một LightingColorFilter
) bằng cách nhân trước và bù đắp màu trắng, nhưng nó rất cụ thể cho multiplymode .. Tôi đang cố gắng tìm một cách để áp dụng opacity/% điều cho tất cả các chế độ truyền khác.
Valeu rapaz. Nhưng vâng, bài viết rất hay, nhưng nó chỉ là nhiều hơn về việc gắn các lớp với các chế độ khác nhau hơn là có cách thay đổi% giá trị đầu vào cho mỗi chế độ. Nó cho thấy một số thao tác trực tiếp của các điểm ảnh sau khi đọc chúng từ hình ảnh, vì vậy có lẽ nó là một thay thế. Tôi sẽ cần phải điều tra điều đó. Bây giờ, cảm ơn! – zeh
Không tìm thấy liên kết, bro. Vui lòng cập nhật! –