私はアップロード後に画像のサイズを変更するために次のコードを使用します。機能はイメージ のサイズを変更し、ファイル拡張子を変更せずに新しい名前で保存し、画像はすべての主要なブラウザで完全に表示されます。 * がファイルを開くことができませんでした:イメージがアップロードされた場合、画像のアップロードとサイズ変更はイメージエディタツールで開かないでください
問題は、いくつかのいずれかの画像をダウンロードし、それが次のエラーに
ERRORを与える花火やPhotoshopのような任意の画像エディタで開くのを試したときのみです。不明なファイルタイプ。 *
なぜエラーが出るのかわかりません。
イメージのサイズを変更する機能。
public static void ResizeImageInput(string OriginalFile, string NewFile, int NewWidth, int MaxHeight, bool OnlyResizeIfWider)
{
System.Drawing.Image FullsizeImage = System.Drawing.Image.FromFile(OriginalFile);
// Prevent using images internal thumbnail
FullsizeImage.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
FullsizeImage.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
if (OnlyResizeIfWider)
{
if (FullsizeImage.Width <= NewWidth)
{
NewWidth = FullsizeImage.Width;
}
}
System.Drawing.Image NewImage = FullsizeImage.GetThumbnailImage(NewWidth, MaxHeight, null, IntPtr.Zero);
// Clear handle to original file so that we can overwrite it if necessary
FullsizeImage.Dispose();
// Save resized picture
NewImage.Save(NewFile);
}
画像
protected void btnArticlePageImage_Click(object sender, EventArgs e)
{
try
{
String filePath = string.Empty;
String CurrentGUID = Guid.NewGuid().ToString();
if (FileUpload2.HasFile)
{
string filename = System.IO.Path.GetFileName(FileUpload2.FileName);
System.IO.FileInfo f = new System.IO.FileInfo(FileUpload2.PostedFile.FileName);
double fileSize = (double)FileUpload2.FileBytes.Length;
if (fileSize < 1024000) // 1 MB current size size in bytes 102400=100kb 512000 = 500kb
{
if ((f.Extension.ToLower() == ".jpg") || (f.Extension.ToLower() == ".png") || (f.Extension.ToLower() == ".gif") || (f.Extension.ToLower() == ".jpeg"))
{
filename = CurrentGUID + f.Extension;
//string productGUID
filePath = Server.MapPath("../ImagesArticles/") + filename;
if (System.IO.File.Exists(filePath))
{
return;
}
else
{
//Upload files
FileUpload2.PostedFile.SaveAs(Server.MapPath("../ImagesArticles/") + filename);
//objPages.PageBannerImageEn = filename;
Session["ArticleLargeImage"] = filename.ToString();
string errMsg = "File Uploaded Successfully";
lblImageUploadMessage1.Text = errMsg;
// ResizeImage(string OriginalFile, string NewFile, int NewWidth, int MaxHeight, bool OnlyResizeIfWider)
Helper.ResizeImage(filePath, filePath, 150, 80, true);
}
return;
}
else
{
string errMsg = "File must be an Image type of .jpg, .png, .gif, .jpeg";
//client-side error
lblImageUploadMessage1.Text = errMsg;
return;
}
}
else
{
string errMsg = "File size is greater the 1MB";
//client-side error
lblImageUploadMessage1.Text = errMsg;
return;
}
}
else
{
//lblMesg.Text = "Only type .jpg, .png, .gif are allow";
string errMsg = "Cant Upload File due to some error";
//client-side error
lblImageUploadMessage1.Text = errMsg;
return;
}
}
catch (Exception ex)
{
Response.Write("ERROR MESSAGE : " + ex.Message.ToString());
}
}
シーケンスアップロードする機能:ユーザーは、画像の種類JPGをアップロードすることができ、GIF、PNGなどを私はその後、GUIDで画像の名前を変更し、同じ画像の拡張子を維持し、 Webサーバーに保存します。その後、私は後で使用するためにイメージのサイズを変更します。
これらのサイズの画像はすべてのブラウザで正常に動作しますが、誰かが編集用にこれらの画像をダウンロードしてもグラフィックエディタツールで開くことはできません。
質問の最初の部分で説明したような共通のエラーメッセージが表示されます。保存するimageformatを追加
追加しないでくださいと、このようなためです。タグを複製するだけです。 –
あなたが[すべてを行う](http://nathanaeljones.com/163/20-image-resizing-pitfalls/)を除いてASP.NETアプリケーションでSystem.Drawing名前空間を使用することは非常に悪いことに注意してください。現在、すべての呼び出しで 'NewImage'がリークしており、例外が発生した場合はFullsizeImageがリークしています。あなたは[asp.netの安全なライブラリを使用することを検討するかもしれません](http://imageresizing.net)。 –