2011-07-27 60 views
5

thể trùng lặp:
Merging two images in C#/.NETHợp nhất hai hình ảnh png với tính minh bạch và duy trì tính minh bạch

Tôi có hai định dạng ảnh png và cả hai đều có tính minh bạch xác định. Tôi cần phải hợp nhất chúng lại với nhau thành một hình ảnh png mới nhưng không mất bất kỳ sự minh bạch nào trong kết quả. Hãy nghĩ về hình ảnh đầu tiên làm hình ảnh chính và hình ảnh thứ hai được sử dụng để thêm lớp phủ, chẳng hạn như chỉ báo thêm/chỉnh sửa/xóa. Tôi đang cố gắng tạo ra một tiện ích nhỏ sẽ lấy một hình ảnh chính và một tập hợp các lớp phủ và sau đó tạo ra tập kết quả của các hình ảnh đầu ra kết hợp chúng.

Dường như có rất nhiều câu trả lời với các giải pháp cho PHP nhưng không cho C#/

+2

Có thể trùng lặp: http://stackoverflow.com/q/465172/15667. Xem điều này có hữu ích không. – xan

+0

WinForms, ASP.Net hoặc WPF? –

Trả lời

17

Điều này sẽ hoạt động.

Bitmap source1; // your source images - assuming they're the same size 
Bitmap source2; 
var target = new Bitmap(source1.Width, source1.Height, PixelFormat.Format32bppArgb); 
var graphics = Graphics.FromImage(target); 
graphics.CompositingMode = CompositingMode.SourceOver; // this is the default, but just to be clear 

graphics.DrawImage(source1, 0, 0); 
graphics.DrawImage(source2, 0, 0); 

target.Save("filename.png", ImageFormat.Png); 
+0

Cảm ơn điều này đã làm việc cho tôi! –

1

Đáng tiếc là bạn đã không được đề cập như thế nào bạn nhận được các điểm ảnh,

nên p-code:

// The result will have its alpha chanell from "first", 
// the color channells from "second". 

assert (first.width = second.width) 
assert (first.height = second.height) 

for y in 0..height 
    for x in 0..width 
     RGBA col_first = first(x,y) 
     RGBA col_second = second(x,y) 

     result(x,y) = RGBA(col_second.r, 
          col_second.g, 
          col_second.b, 
          col_first.a )) 
Các vấn đề liên quan