-1

画像を変更した後、画像を保存したい。しかし、.Save() 関数の呼び出し中にエラーが発生します。

            var tempapth = Server.MapPath("..//Images//Temp//" + btnfile.FileName);
            btnfile.SaveAs(tempapth);
            using (var fileStream = File.OpenRead(tempapth))
            {
                var ms = new MemoryStream();
                fileStream.CopyTo(ms);
                ms.Seek(0, SeekOrigin.Begin);
                System.Drawing.Image img1 = System.Drawing.Image.FromStream(ms);
                fileStream.Close();
                var bmp1 = img1.GetThumbnailImage(100, 150, null, IntPtr.Zero);
                bmp1.Save(path);
            }

bmp1.save(パス);

エラーを与える

GDI+ で一般的なエラーが発生しました

4

3 に答える 3

0

編集
この返信を書いた後、OPは質問を変更しました。以前はpath、パス名を含む (ファイル名を含まない) 変数も宣言されていました。

コードの最初のバージョンでは、ファイル名のないパス名がありました ( Server.MapPath("..//Images//Category//" + catid + "//");)。保存するには、次のようにファイル名も追加する必要があります。

string path = Server.MapPath("..//Images//Category//" + catid + "//Image.bmp");
于 2012-10-08T13:15:43.710 に答える
0

path変数には、ファイルではなくフォルダーの名前が含まれます。

次のようなものを使用します。

bmp1.Save(Path.Combine(path, btnfile.FileName));

補足として、文字/は文字列内で特別な意味を持たないため、エスケープしないでください。使用する:

var path = Server.MapPath("../Images/Category/" + catid + "/");
于 2012-10-08T13:21:08.297 に答える
0

どうですか:

var srcPath = Server.MapPath("..//Images//Temp//" + btnfile.FileName);
if (!File.Exists(srcPath)
{
    throw new Exception(string.Format("Could not find source file at {0}", srcPath));
}

var srcImage = Image.FromFile(srcPath);
var thumb = srcImage.GetThumbnailImage(100, 150, null, IntPtr.Zero);

var destPath = Server.MapPath("..//Images//Category//" + catid + "//");
if (!Directory.Exists(destPath))
{
    Directory.CreateDirectory(destPath);
}

thumb.Save(Path.Combine(destPath, btnfile.FileName));
于 2012-10-08T13:22:43.873 に答える