2015-03-27 12 views
5

Tôi đang cố gắng XOR một số giá trị với giá trị RGB của hình ảnh của tôi, lưu hình ảnh đó và thực hiện lại các bước để có được hình ảnh gốc. Vấn đề là, tôi không biết tại sao tôi không rõ ràng (với một số tiếng ồn) hình ảnh. Đây là mã của tôi, và một hình ảnh dưới đây:Nhận các màu sai sau khi thao tác với hình ảnh

Bitmap original = new Bitmap("D:\\img\\1.jpg"); 
Bitmap inp_bmp = new Bitmap("D:\\img\\1.jpg"); 

int width = inp_bmp.Width; 
int height = inp_bmp.Height; 
Color pixel; 

for (int y = 0; y < height; y += 1) 
{ 
    for (int x = 0; x < width; x += 1) 
    { 
     pixel = inp_bmp.GetPixel(x, y); 

     int a = pixel.A; 
     int r = (pixel.R^(1000))%256; 
     int g = (pixel.G^(185675))%256; 
     int b = (pixel.B^(78942))%256; 
     inp_bmp.SetPixel(x, y, Color.FromArgb(a, r, g, b)); 


    } 
} 

pictureBox2.Image = inp_bmp; 
pictureBox1.Image = original; 
inp_bmp.Save("D:\\img\\4.jpg"); 

Sau khi một hình ảnh đã được lưu, tôi thay đổi

Bitmap inp_bmp = new Bitmap("D:\\img\\1.jpg"); 

cho

Bitmap inp_bmp = new Bitmap("D:\\img\\4.jpg"); 

và loại bỏ

//inp_bmp.Save("D:\\img\\4.jpg"); 

và tôi nhận được một hình ảnh như

enter image description here

(trái gốc, phải - kết quả); Như bạn có thể thấy, tôi nhận được một số màu sắc sai ở hình 4, tại sao? Tất cả trong tất cả đều gần với bản gốc nhưng vẫn không đúng

+0

Tôi đã chỉnh sửa tiêu đề của bạn. Vui lòng xem, "[Câu hỏi có nên bao gồm" thẻ "trong tiêu đề của họ không?] (Http://meta.stackexchange.com/questions/19190/)", trong đó sự đồng thuận là "không, họ không nên". –

+0

Mã của bạn hoạt động tốt ở đây với jpeg thực. Bạn có thể đăng hình ảnh gốc không? – TaW

+0

Đây là Sir - http://i62.tinypic.com/20jqrea.jpg –

Trả lời

3

Okey, tôi đã phát hiện sự cố. Vấn đề là tiết kiệm một hình ảnh.

này giúp:

inp_bmp.Save("D:\\img\\4.png", System.Drawing.Imaging.ImageFormat.Png); 
0

Tôi đoán hình ảnh của bạn không sử dụng màu 8 bit. % 256 giả sử bạn có hình ảnh 8 bit.

+1

đã thử với% 256 như int r = (pixel.R^220); int g = (pixel.G^255); int b = (pixel.B^206); vẫn cùng một vấn đề –

+0

jpeg luôn có các thành phần màu 8 bit. Trong thực tế, tất cả các hình ảnh web làm theo như tôi biết. – Nyerguds

Các vấn đề liên quan