私はユーザーが画像をアップロードできるWebサイトで作業しています。そして、私はここでアップロードされた画像ストリームから画像を読み込んで保存すると「GDI +で一般的なエラーが発生しました」
を取得するためにHttpPostedFileBase
を使用していることはアクションヘッダーです:
public async Task<ActionResult> Create(Advert advert, HttpPostedFileBase FileURL)
私はfileName
は私がランダムに生成するパラメータであり、すべてが動作しているFileURL.SaveAs(HttpContext.Server.MapPath(fileName))
を使用して画像を保存することができます完全に。
今、私は私の画像のサムネイルを生成したいので、私は次の方法で書きました:
public static void SaveJpeg(string path, HttpPostedFileBase uploadedFile, int quality)
{
if (quality < 0 || quality > 100)
throw new ArgumentOutOfRangeException("quality must be between 0 and 100.");
// Encoder parameter for image quality
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
// JPEG image codec
ImageCodecInfo codec = GetEncoderInfo("image/jpeg");
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = qualityParam;
Image img = Image.FromStream(uploadedFile.InputStream);
var thumbnail = img.GetThumbnailImage(img.Width/5, img.Height/5, null, IntPtr.Zero);
//img.Save(path, codec, encoderParams);
thumbnail.Save(path, codec, encoderParams);
}
をしかし、サムネイルに
PSを保存するとき、私はA generic error occured in GDI+
エラーを取得しています:私は私のコードをテスト(Image
をメソッドに渡す)、すべてがうまくいった。
助けてください。事前に
感謝:)
私はその機能を使用したことがありませんが、MSDNのドキュメントには、V =(https://msdn.microsoft.com/en-us/library/system.drawing.image.getthumbnailimage([言います] vs.110).aspx)で、コールバックは必須です: "デリゲートを作成してデリゲートへの参照をコールバックパラメータとして渡す必要がありますが、デリゲートは使用されません。場合によっては、「ヌル」を渡すことが問題になることがあります。 –
MSDNの「注意」セクションまでスクロールし、https://msdn.microsoft.com/en-us/library/system.drawing(v=vs.110).aspxを参照してください。マイクロソフトでは、ASP.NETでこのようなクラスの使用をサポートしていません。サードパーティのソリューションを使用する必要があります。 –