6

Outlook 2010 アドインを開発中で、シリアル化された XML ファイルから画像を読み込んでいます。画像は正常に読み込まれ、Winform の pictureBox オブジェクトに問題なく割り当てることができます。オブジェクトは次の場所に保存されます

[XmlIgnore]
public Bitmap Image
{
   get { return this.templateImage; }
   set { this.templateImage = value; }
 }

ただし、物理ファイルをハードディスクに保存しようとすると、次のようになります。

string filePath = Path.Combine(dirPath, item.Id + ".jpg");
try
{
    item.Image.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception e)
{
    Debug.WriteLine("DEBUG::LoadImages()::Error attempting to create image::" + e.Message);
}

GDI +で一般的なエラーが発生しました。フォルダの書き込み権限を確認しましたが、書き込み権限があります。ここで何が問題なのかわかりません。また、ImageFormat を bmp や png などに変更して、変換の問題かどうかを確認しましたが、そうではありません。誰かが試してみることを提案しますか?

4

6 に答える 6

25

コメントでこれに答えてくれた Simon Whitehead に感謝します。彼は、「3) ファイルが他のもの (コードを含む) で使用されていないことを確認してください」と述べました。

したがって、問題は、自分のコードが item.Image オブジェクトを使用していて、GDI+ が dispose() メソッドを呼び出すのを妨げていたことです。解決策は、オブジェクトを新しいオブジェクトにコピーし、そのオブジェクトを使用して「書き込み」を行うことでした。結果のコードは次のとおりです。

try
{
   using (Bitmap tempImage = new Bitmap(item.Image)) 
   {
      tempImage.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
   }    
}
catch (Exception e)
{
    Debug.WriteLine("DEBUG::LoadImages()::Error attempting to create image::" + e.Message);
}
于 2013-02-14T02:13:39.313 に答える
7

私もコード行で同じエラーに直面しました:

wmImg.Save(BrandImgPath,ImageFormat.Png);

BrandImgPath = "D:/XYZ/fileName;

見つかった原因:

XYZ フォルダが D: ドライブに存在しませんでした。したがって、私のコードは後でこのフォルダーを作成していました。そのパスが存在するかどうかを確認する必要があります。

if (Directory.Exists(@"D:/XYZ")) return;

誰かがコードの間違いを解決するのに役立つことを願っています。

于 2013-09-17T04:14:37.790 に答える
2


1. 宛先フォルダーに読み取り/書き込み権限があることを確認してください (2 回確認してください)。
2. Server.MapPath を使用する方がよい
3. コピー先のドライブまたはフォルダに空き容量があることを確認してください。4. ほとんどの場合、共有サーバーではメモリ ストリーマーを使用できません。そのため、プロバイダーが使用を許可していることを確認する必要があります。

Microsoft が「一般的な GDI+ エラー」ではなく、詳細な例外エラーを表示することを願っています !!!

于 2014-02-16T06:00:52.203 に答える
1

フォルダーが存在することを確認する必要があるこの問題が自分で発生した場合、GDI は何が問題なのかを教えてくれませんでした。

于 2014-03-14T22:30:05.520 に答える
0

同じ一般的な例外がありましたが、パラレル plesk ファイル マネージャーで IIS に書き込み権限を与えました。Windowsサーバーを使用している場合は、サーバーのIIS_IUSRであったIISユーザーに書き込み権限を付与してください

また、上記のコメントで述べたように、保存しようとしているフォルダーが正しいことを確認してください

于 2014-09-24T10:10:36.987 に答える