У меня есть проблема с преобразованием массива байтов в двойной массив с использованием BitConverter.ToDouble()
.Проблема для преобразования байтового массива в double
Просто моя программа выберет изображение, а затем преобразует изображение в массив байтов. Затем он преобразует массив байтов в двойной массив.
Проблема, что при преобразовании массива байтов в double я получу эту ошибку до окончания цикла.
(массив назначения не достаточно долго, чтобы скопировать все элементы в коллекции. Проверьте индекс массива и длины.)
ошибка произойдет ровно в array.length-7 позиции, которая является последней седьмой позиции до последнего положение на массиве.
мне нужна помощь, чтобы решить эту проблему, и вот мой код:
private Bitmap loadPic;
byte[] imageArray;
double[] dImageArray;
private void btnLoad_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
if (open.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(open.FileName);
loadPic = new Bitmap(pictureBox1.Image);
}
}
catch
{
throw new ApplicationException("Failed loading image");
}
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}
private void btnConvert_Click(object sender, EventArgs e)
{
imageArray = imageToByteArray(loadPic);
int index = imageArray.Length;
dImageArray = new double[index];
for (int i = 0; i < index; i++)
{
dImageArray[i] = BitConverter.ToDouble(imageArray,i);
}
}
public byte[] imageToByteArray(Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, ImageFormat.Gif);
return ms.ToArray();
}
Нет, это не так. Вы используете литье, что приведет к совершенно другому результату, чем BitConverter. –
Я просто уточнил свой пост, чтобы указать, что на основе его цикла (и его инициализации массива) я не думаю, что BitConverter - это то, что он хочет. – Sapph
Да, я думаю, ты прав. +1 –