2015-03-27 23 views
5

Próbuję XOR niektóre wartości z wartościami RGB mojego obrazu, zapisz go i wykonaj z powrotem kroki, aby uzyskać oryginalny obraz. Problem polega na tym, że nie wiem, dlaczego obraz nie jest wyraźny (z pewnym hałasem). Oto mój kod, a obraz poniżej:Uzyskiwanie niewłaściwych kolorów po manipulacji obrazami

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

Po obraz został zapisany, zmieniam

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

dla

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

i usunąć

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

i otrzymuję obraz podobny

enter image description here

(lewa oryginał, po prawej - wynik); Jak widać, na obrazie 4 dostaję złe kolory, dlaczego? Podsumowując, jest zbliżony do oryginału, ale nadal nie jest w porządku.

+0

Mam edytowany tytuł. Zobacz, "[Czy w tytułach pytania powinny znaleźć się" znaczniki "?] (Http://meta.stackexchange.com/questions/19190/)", gdzie konsensus brzmi "nie, nie powinien". –

+0

Twój kod działa dobrze tutaj z prawdziwymi jpegami. Czy możesz opublikować oryginalny obraz? – TaW

+0

Tutaj jest Sir - http://i62.tinypic.com/20jqrea.jpg –

Odpowiedz

3

Okey, znalazłem problem. Problem polegał na zapisywaniu obrazu.

Pomogło:

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

Zgaduję, że Twój obraz nie używa 8-bitowych kolorów. % 256 zakłada, że ​​masz obraz 8-bitowy.

+1

wypróbowany bez% 256 jak int r = (pixel.R^220); int g = (piksel.G^255); int b = (pixel.B^206); nadal ten sam problem –

+0

jpeg zawsze ma 8-bitowe składniki kolorów. W rzeczywistości wszystkie obrazy internetowe robią tyle, ile wiem. – Nyerguds