0

ユーザーがファイルをアップロードすると、

画像の幅/高さが設​​定された制限を超えているかどうかを確認し、必要に応じて画像のサイズを変更する最良の方法は何ですか?

現在、画像の幅/高さを確認するだけHttpPostedFileBaseでロードするために、一時フォルダーに保存することを試しています。Bitmap.FromFile()

次に、ImageResizerライブラリを使用して、 を使用して画像のサイズを変更しImageResizer.ImageJobます。

今のところステージで打っout of memory exceptionてい ます。Bitmap.FromFile(path)

4

1 に答える 1

0

ImageResizer 3.4 には、これをより安全かつ簡単にするための新しい ImageUploadHelper プロジェクト/プラグインが含まれています。(これはソース ダウンロードの /Plugins フォルダーにありますが、まだプレビュー段階であるため、NuGet パッケージはまだありません。

long pixels = 0;

try{
  var size = ImageUploadHelper.GetImageSize(httpPostedFile);
  pixels = size[0] * size[1];
} catch{} //Corrupted images will cause an OutOfMemoryException.

string resultPath = null;
if (pixels > 3 * 1000 * 1000){
  var j = new ImageJob(httpPostedFile,"~/uploads/<guid>.<ext>", new Instructions("maxwidth=1700&maxheight=1700");
  j.Build();
  resultPath = PathUtils.GuessVirtualPath(j.FinalPath);
}else{
  resultPath = "~/uploads/" + ImageUploadHelper.SaveUploadedFileSafely("~/uploads",httpPostedFile);
}
于 2013-09-10T16:22:08.963 に答える