Доброе утро,Значение альфы не сохраняется при сохранении растрового изображения
Я делаю изображение Стеганографический проект для колледжа. Скрывая данные на изображении. Я пишу «Длина текста», которая является Int32 в пикселе. Поскольку Int32 имеет 4 байта. Я думал, что могу записать его в 4 байтах Alpha, Red, Green, Blue, так как каждый цвет имеет 1 байт. Затем я сохраняю изображение в формате BMP. Я использовал один шаг и данные правильно распределены и заданы в пикселе.
Проблема возникает, когда я читаю пиксель. R, G, B имеют свою ценность, поскольку я их установил. Но альфа всегда 255 независимо от того, что она была установлена.
код, который я использую для распределения Int32 в 4 байта являются
byte R, G, B, A;
int colorValue = messageLength;
int first = colorValue & 255;
//R contains bit 0-7 means the least significant 8 bits
R = (byte)first;
colorValue = colorValue - first;
int second = colorValue & 65535;
colorValue = colorValue - second;
second = second >> 8;
//G contains 8-15
G = (byte)second;
int third = colorValue & 16777215;
colorValue = colorValue - third;
third = third >> 16;
//B contains 16-23
B = (byte)third;
colorValue = colorValue >> 24;
//A contains 24-31
A = (byte)colorValue;
pixelColor = Color.FromArgb(A, R, G, B);
bitmap.SetPixel(location.X, location.Y, pixelColor);
Код для получения значений спина
byte R, G, B, A;
R = pixelColor.R;
G = pixelColor.G;
B = pixelColor.B;
A = pixelColor.A;
messageLength = A;
messageLength = messageLength << 8;
messageLength += B;
messageLength = messageLength << 8;
messageLength += G;
messageLength = messageLength << 8;
messageLength += R;
Есть ли что-то мне не хватает. Разве BMP не позволяет сохранять альфа-значение? Пожалуйста, помогите. Спасибо.
Трудно диагностировать проблему, не видя кода, который вы используете для написания и чтения растрового изображения. Можете ли вы опубликовать это? –
Не уверен, следовательно, комментарий, но вам не понадобится что-то вроде «PNG» для хранения значений альфа? – npinti
Кажется, это невозможно. Возможно [используйте PNG] (http://msdn.microsoft.com/en-us/library/aa970062 (v = vs.100) .aspx)? –