画像を Web サーバーにアップロードするのに役立つ 1 つの Windows Phone アプリケーションを開発しています。デバイスからすべての画像を 1 つのList オブジェクトに選択しています。すべてのビットマップ イメージを 1 つずつ byte[] に変換しています。
私のコード
public byte[] ConvertToBytes(BitmapImage bitmapImage)
{
byte[] data = null;
WriteableBitmap wBitmap = null;
using (MemoryStream stream = new MemoryStream())
{
wBitmap = new WriteableBitmap(bitmapImage);
wBitmap.SaveJpeg(stream, wBitmap.PixelWidth, wBitmap.PixelHeight, 0, 100);
stream.Seek(0, SeekOrigin.Begin);
//data = stream.GetBuffer();
data = stream.ToArray();
DisposeImage(bitmapImage);
return data;
}
}
public void DisposeImage(BitmapImage image)
{
if (image != null)
{
try
{
using (MemoryStream ms = new MemoryStream(new byte[] { 0x0 }))
{
image.SetSource(ms);
}
}
catch (Exception ex)
{
}
}
}
ビットマップからバイトへの変換
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!store.DirectoryExists("ImagesZipFolder"))
{
//MediaImage mediaImage = new MediaImage();
//mediaImage.ImageFile = decodeImage(new byte[imgStream[0].Length]);
//lstImages.Items.Add(mediaImage);
store.CreateDirectory("ImagesZipFolder");
for (int i = 0; i < imgname.Count(); i++)
{
using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(@"ImagesZipFolder\" + imgname[i], FileMode.CreateNew,store))
//using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(@"ImagesZipFolder\text.txt" , System.IO.FileMode.OpenOrCreate, store))
{
// byte[] bytes = new byte[imgStream[i].Length];
byte[] bytes = ConvertToBytes(ImgCollection[i]);
stream.Write(bytes, 0, bytes.Length);
}
}
}
else {
directory = true;
}
}
エミュレーターには 91 個の画像があります。これらすべてのビットマップ イメージをbyte[]に変換すると、次のエラーが発生します。wBitmap = new WriteableBitmap(bitmapImage);
タイプ 'System.OutOfMemoryException' の例外が System.Windows.ni.dll で発生しましたが、ユーザー コードで処理されませんでした
このエラーを解決するにはどうすればよいですか?
ウェブサービス
巨大なファイルをWebサービスに送信すると、次のようなエラーが発生しますか
タイプ 'System.OutOfMemoryException' の例外が System.ServiceModel.ni.dll で発生しましたが、ユーザー コードで処理されませんでした