我在該網站有一個用戶畫廊,訪客可以上傳一些圖像。上傳圖片後,應調整到一些預定義的預設。另外原圖也應該保存。所有工作正常png
和bmp
圖像格式。但如果我上傳gif
格式或jpeg
與優勢的一種顏色上傳原始圖像似乎被壓縮。圖像上傳沒有質量損失
例如:
原文:
上傳:
我看一遍在谷歌搜索,並發現了一些例子,說明如何上傳圖片的權利。 最後我已經寫了一個方法:
void UploadImagePreset(Image image, ImageFormat imgFormat, string imgPath)
{
using (var uploadStream = imageUploader.CreateUploadStream(imagePath))
{
var newWidth = image.Width;
var newHeight = image.Height;
using (var outBitmap = new Bitmap(newWidth, newHeight))
{
using (var outGraph = Graphics.FromImage(outBitmap))
{
outGraph.CompositingQuality = CompositingQuality.HighQuality;
outGraph.SmoothingMode = SmoothingMode.HighQuality;
outGraph.PixelOffsetMode = PixelOffsetMode.HighQuality;
outGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;
var imageRect = new Rectangle(0, 0, newWidth, newHeight);
outGraph.DrawImage(image, imageRect);
outBitmap.Save(uploadStream, imgFormat);
}
}
}
}
但它並沒有幫助。上傳的圖像與上述相同。 我已經tryied像這樣指定結果圖像的qaulity:
var encoderParameters = new EncoderParameters();
var encoderParameter = new EncoderParameter(Encoder.Quality, 100);
encoderParameters.Param[0] = encoderParameter;
var encoder = ImageCodecInfo.GetImageEncoders()
.Where(e => e.FormatID == imgFormat.Guid)
.FirstOrDefault();
outBitmap.Save(uploadStream, encoder, encoderParameters);
它沒有工作過。另外當我上傳jpeg圖像時發生異常。
有沒有壓縮或調整大小的上傳圖像的方法?我花了幾個小時試圖解決這個問題,並堅持下去。
目前還不清楚 - 上傳過程是怎麼回事?如果它僅僅來自沒有額外客戶端代碼的瀏覽器,則應該獲取客戶端上的確切文件 - 此時,您的問題與上傳(或ASP.NET)沒有關係,並且只是*做調整大小。 –
我使用FileUpload控件,沒有任何額外的客戶端代碼 –
正確的,所以首先驗證,如果你保存了上傳的文件 - 根本不處理它* - 你最終會得到完全相同的文件。當你向自己證明了這一點時,你可以將上傳部分排除在等式之外。將問題縮小到儘可能小的區域。 –