2

ImageオブジェクトをFileInfoリストに挿入するにはどうすればよいですか?

このタイプの画像のリストがあります

public  List<FileInfo> _imagesList = new List<FileInfo>();

しかし、次のような方法を使用して、このリストに画像を追加する必要があります。

public void AddImage(Image img)
{

}

この方法を使ってみました

 public void AddImage(string pathToImage)
    {
        try
        {
            FileInfo file = new FileInfo(pathToImage);
                 _imagesList.Add(file);
        }
        catch (Exception e)
        {
            MessageBox.Show("Не удалось загрузить изображение. Ошибка : " + e);
        }

    }
4

3 に答える 3

1

それができない理由を説明させてください。Imageクラスには、そのイメージの作成に使用されたファイルへの参照がありません。Imageでインスタンスを作成すると

Image.FromFile(filename)

ファイル名はどこにも保存されません。インスタンス内にImageあるのは、次のように初期化されたバイト配列だけです。

Stream dataStream = File.OpenRead(filename);
image.rawData = new byte[(int) dataStream.Length];
dataStream.Read(image.rawData, 0, (int) dataStream.Length);

つまり、ポイントは、作成されたファイル名を取得できないということですImage。実際には、イメージはファイルからではなく、任意のストリーム (ネットワーク ストリーム、メモリ ストリーム) から作成できます。はどのファイルにも関連付けられていないため、オブジェクトImageのリストに挿入することはできません。FileInfo

回避策として、Imageファイルに保存できます。そして、そのファイルをリストに挿入します。

于 2013-08-19T12:14:38.240 に答える
0

このようにすることはできません。FileInfoはコンストラクターで 1 つの引数を受け入れます: fileName.

次のようなものが必要です。

public  List<FileInfo> _imagesList = new List<FileInfo>();

public void Main()
{
   AddImage("YourImagePath1");
   AddImage("YourImagePath2");
   // ...
}

public void AddImage(string path)
{
   _imagesList.Add(new FileInfo(path));
   //var img = Image.FromFile(path); // do this if you need to load your image
}

アップデート:

質問を変更し、コードが私のようになりました。以前のコードの問題は何でしたか?

于 2013-08-19T11:43:51.803 に答える
0

指定した方法を使用してnew FileInfo(pathToImage)、リストを追加または変更して、Imageアイテムが含まれるようにすることができます

あなたが使用することができます

public  List<Image> _imagesList = new List<Image>();

例えば。より多くの情報を共有していただければ、さらにお役に立てます。これは XY の問題のように見えるので、実際の問題を教えてください。

于 2013-08-19T11:44:51.647 に答える