![](/img/trans.png)
[英]What is the fastest and safest way to send large number of requests with HttpClient?
[英]Safest Way to Reduce Size of Large Images
我在這里和其他網站上花費了大量時間,試圖找到一種對圖像進行重采樣的好方法。 下面的代碼是我正在使用的代碼
public static Bitmap ResampleImage(Image img, Size size, long quality) {
try {
var bmp = new Bitmap(size.Width, size.Height, PixelFormat.Format32bppPArgb);
using (var gr = Graphics.FromImage(bmp)) {
gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
gr.DrawImage(img, new Rectangle(Point.Empty, size));
}
return setImageQualityLevel(bmp, quality);
}
catch (Exception ex) {
logger.Warn(string.Format("Image Resample Failed:\r\n{0}\r\n{1}", ex.Message, ex.StackTrace));
return (Bitmap)img;
}
}
不幸的是,它通常無法觸發catch塊。 通常情況下,這與大圖像(最大20Mb)有關-這些大小在我的應用程序中沒有好處,但我不想對用戶說-在嘗試使用它之前將其減小到1Mb。 在使用以下方式加載圖像時,我也會遇到OOM失敗:
image2Use = new Bitmap(image.Filename);
因此,即使在將其放入重新采樣代碼之前,它仍會失敗。
因此,我真正要尋找的是一種獲取圖像並調整其大小的安全方法。 我寧願不花錢使用第三方庫,因為這是我要做的全部-加載大圖像文件並使它小很多!
請考慮使用第三方。
他們有一個很好的convert
命令行實用工具,可以完全滿足您的需求。
我使用它們已有幾年了,它們在不同環境(Windows桌面一直到* nix服務器)中的易用性和功能給我留下了深刻的印象。
由於它僅在大圖像上發生...並且假設您的過程在圖像上傳后立即開始...
在您的過程開始對其進行處理之前,圖像可能尚未完成復制。
要進行驗證,請手動復制其中一張大圖像。 然后,開始處理。 如果可行,您將知道過程正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.