Я пытаюсь преобразовать растровое изображение в Байт-массив. Я выбрал все изображение, используя класс MediaLibrary и добавил его в список растровых изображений. Вот мой кодПреобразование bitmapimage в массив байтов
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!store.DirectoryExists("ImagesZipFolder"))
{
store.CreateDirectory("ImagesZipFolder");
for (int i = 0; i < imgname.Count(); i++)
{
using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(@"ImagesZipFolder\" + imgname[i], System.IO.FileMode.CreateNew, store))
{
byte[] bytes = null;
using (MemoryStream ms = new MemoryStream())
{
WriteableBitmap wBitmap = new WriteableBitmap(ImgCollection[i]);
wBitmap.SaveJpeg(ms, wBitmap.PixelWidth, wBitmap.PixelHeight, 0, 100);
stream.Seek(0, SeekOrigin.Begin);
bytes = ms.GetBuffer();
stream.Write(bytes, 0, bytes.Length);
}
// byte[] bytes = Encoding.UTF8.GetBytes(imgname[i]);//new byte[ImgCollection[i].PixelWidth * ImgCollection[i].PixelHeight * 4];
// stream.Write(bytes, 0, bytes.Length);
}
}
}
else {
directory = true;
}
}
В основном то, что я пытаюсь сделать это, выбрав все изображения или фотографии с устройства и создать почтовый файл, что изображения. Мне удалось создать zip-файл изображений. Когда я извлекаю этот файл, есть некоторые изображения, но проблема в том, что когда я дважды нажимаю на изображение, я не вижу этого изображения. Я думаю, что проблема заключается в чтении байтов изображения. Я не понимаю, что случилось? Правильно ли мой код?
Можете ли вы попробовать с 'ms.ToArray()' вместо 'ms.GetBuffer()'? –
@KooKiz Спасибо за ответ. Я пробовал это, но он не работает –
В качестве побочного примечания вам не нужно использовать массив байтов. После поиска прямо вызовите 'ms.CopyTo (stream);'. Это не решит вашу проблему, но это упростит чтение и сохранение кода. И поиск должен быть вызван ms, а не потоком. –