-1

以下の方法で私は読むことができます。

しかし、disposeメソッドがないので、後でファイルを削除することはできません。

したがって、以下のメソッドは失敗します。

私は適切な解決策を思い付くことができませんでした。

ビットマップクラスは、C#4.5WPFアプリケーションでは認識されません。

ありがとうございました

    DirectoryInfo dInfo = new DirectoryInfo(@"C:\pokemon_files\images\");
    FileInfo[] subFiles = dInfo.GetFiles();

    BitmapImage myImg;
    foreach (var vrImage in subFiles)
    {
        string srFilePath = vrImage.FullName;
        System.Uri myUri = new Uri(srFilePath);
        myImg = new BitmapImage(myUri);

        if (myImg.Width < 50)
        {
            File.Delete(srFilePath);
            continue;
        }
     }
4

1 に答える 1

1

発生するエラーは、ビットマップで現在使用されているファイルを削除しようとしたことが原因であると思います(例外名は覚えていません)。

これには解決策があります。つまり、バイトストリームを作成することです。

byte[] imageData;

using(var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
using(var binaryReader = new BinaryReader(fileStream))
{
    imageData = binaryReader.ReadBytes((int)fileStream.Length);
}

var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource = new MemoryStream(imageData);
bitmap.EndInit();

//Now you can check the width & height, the file stream should be closed so you can
//delete the file.

[編集]バイトを読みたくない場合、ファイルからすべてのバイトを読みたい場合は、BinaryReader常にこの解決策があります。

于 2013-03-27T11:22:09.267 に答える