2015-03-27 18 views
5

Orijinal görüntü elde etmek için, görüntüümdeki RGB değerleriyle bazı değerleri XOR kullanmaya, görüntüyü kaydetmeye ve adımları geri döndürmeye çalışıyorum. Sorun şu ki, neden net (biraz gürültülü) görüntü aldığımı bilmiyorum. İşte benim kodudur ve aşağıda bir resim: Bir görüntü kaydedildiBir görüntü manipulasyonundan sonra yanlış renkler elde etme

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"); 

sonra

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

için

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

değiştirip kaldırmak

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

ve ben gibi bir görüntü elde ediyorum

enter image description here

(sol özgün, sağ - sonuç); Gördüğünüz gibi, resim 4'te yanlış renkler görüyorum, neden? Tüm bunlar orijinaline yakın, ancak hala doğru değil

+0

. Lütfen, "[Sorular soruların başlığında" etiketler içeriyor mu? "(Http://meta.stackexchange.com/questions/19190/)" bölümüne bakacak olursak, fikir birliği "hayır, yapmamalı" dır. –

+0

Kodunuz, gerçek jpeglerle burada iyi çalışıyor. Orijinal resmi yayınlayabilir misiniz? – TaW

+0

İşte bu bir Efendim - http://i62.tinypic.com/20jqrea.jpg –

cevap

3

Okey, sorunu buldum. Sorun bir görüntü kaydetmekti.

Bu yardımcı: Ben senin başlık düzenledikten

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

Sanırım resmin 8 bit renk kullanmıyor. % 256, 8 bitlik bir görüntünüz olduğunu varsayar.

+1

,% 256 gibi int r = (pixel.R^220) ile denendi; int g = (piksel .G^255); int b = (pixel.B^206); hala aynı sorun –

+0

jpeg her zaman 8 bit renk bileşenlerine sahiptir. Aslında, tüm web görüntüleri bildiğim kadarıyla. – Nyerguds

İlgili konular