1

デバイスからディレクトリにすべての画像をコピーしています。画像をコピーしているときに、このエラーOperation not allowed on IsolatedStorageFileStream が表示されます。

ファイルをコピーするコードは次のとおりです。

MediaLibrary m = new MediaLibrary();
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
{
  if (store.DirectoryExists("ImagesZipFolder"))
  {
     deleteFileFolder("ImagesZipFolder");
  }

  if (!store.DirectoryExists("ImagesZipFolder"))
  {
     store.CreateDirectory("ImagesZipFolder");

     foreach (var picture in m.Pictures)
     {
        using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(@"ImagesZipFolder/" + picture.Name, FileMode.CreateNew, store))
        {
            BitmapImage image = new BitmapImage();
            image.SetSource(picture.GetImage());

            byte[] bytes = ConvertToBytes(image);
            stream.Write(bytes, 0, bytes.Length); 
        }
     }
  }

}

これが私のConvertToBytesメソッドです。

    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;
        }
    }

基本的に私がしようとしているのは、すべての画像のzip ファイルを作成することです。デバイスには合計222個の画像があります。では、どうすればこの問題を解決できますか? この画像の zip を作成するにはどうすればよいですか?

4

2 に答える 2

0

コードを確認したところ、動作しているようです (DisposeImage() メソッドにエラーがない場合) OperationNotPermittedException は発生していません。ただし、コードにエラーがある場合は、deleteFileFolder("ImagesZipFolder") 行が原因である可能性があります。さらに調査できるように、スニペットを提供していただけますか。作業コードを投稿しています...そのメソッドを単純な事前定義されたものに置き換えました--

  MediaLibrary m = new MediaLibrary();
    using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
    {
        if (store.DirectoryExists("ImagesZipFolder"))
        {

            store.DeleteDirectory("ImagesZipFolder");
        }

        if (!store.DirectoryExists("ImagesZipFolder"))
        {
            store.CreateDirectory("ImagesZipFolder");

            foreach (var picture in m.Pictures)
            {
                using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(@"ImagesZipFolder/" + picture.Name, FileMode.CreateNew, store))
                {
                    BitmapImage image = new BitmapImage();
                    image.SetSource(picture.GetImage());

                    byte[] bytes = ConvertToBytes(image);
                    stream.Write(bytes, 0, bytes.Length);
                }
            }
        }
    }
于 2015-01-05T19:49:32.800 に答える