(я использую Google Translate, извините ..) Я пытаюсь сделать небольшой проект с сокращением. Я нашел похожие темы, но они не то, что мне нужно. Суть в том, что я получаю изображение на входе, преобразую его в byte [], затем в двоичный файл. (Здесь все в порядке) Затем я перевожу текст в двоичный файл. (Здесь все ок) в двоичном массиве я заменяю последние два бита на те, которые мне нужны. Я перевожу все обратно в byte [] (все в порядке)
, а затем я пытаюсь преобразовать byte [] в изображение, и возникает ошибка (неверный аргумент)
Если я не сделаю изменяется на двоичный, преобразование успешно (и я получаю то же изображение, которое я дал на входе).
изменить код в двоичном массиве:
public byte[] ShifrMessage(byte[] input, string message)
{
byte[] ConvertToByteArray(string str, Encoding encoding)
{
return encoding.GetBytes(str);
}
String ToBinary(Byte[] data)
{
return string.Join("", data.Select(byt => Convert.ToString(byt, 2).PadLeft(8, '0')));
}
//message in the binary
var binaryString = ToBinary(ConvertToByteArray(message, Encoding.ASCII));
byte[] ret = new byte[input.Length];
for (int i = 0; i < ret.Length; i++)
{
string a = Convert.ToString(ret[i], 2).PadLeft(8, '0');
//changing the last two bits
if (binaryString.Length >= 2)
{
a = a.Substring(0, a.Length - 2) + binaryString.Substring(0, 2);
binaryString = binaryString.Substring(2);
}
///
byte b = StringToByte(a);
ret[i] = b;
}
return ret;
}
Я предполагаю, что при преобразовании Для Image проверяется целостность изображения, которое было изменено.
преобразование:
public Image byteArrayToImage(byte[] byteArrayIn)
{
using (var ms1 = new MemoryStream(byteArrayIn))
{
return Image.FromStream(ms1);
}
}
Можете ли вы сказать мне, в чем может быть проблема?