實現方法有2個方式:
1。使用image的getthumbnailimage 方法直接生成壓縮圖片,大概大概如此:
file://設置 原圖片 對象的 encoderparameters 對象,設置清晰度
imagecodecinfo ici = getcodecinfo((string)htmimes[mfileextname]);
encoderparameters parameters = new encoderparameters(1);
parameters.param[0] = new encoderparameter(encoder.quality,lngdefinition);
system.drawing.image.getthumbnailimageabort mycallback =new
system.drawing.image.getthumbnailimageabort(thumbnailcallback);
system.drawing.image mythumbnail = image.getthumbnailimage(intnewwidth, intnewheight,
mycallback, intptr.zero);
mythumbnail.save(txtnewpath, ici, parameters);
2。使用graphics 重新繪制圖象
imagecodecinfo ici = getcodecinfo((string)htmimes[mfileextname]);
encoderparameters parameters = new encoderparameters(1);
parameters.param[0] = new encoderparameter(encoder.quality,lngdefinition);
bitmap objnewbitmap = new bitmap(intnewwidth, intnewheight, pixelformat.format32bppargb);
//從指定的 image 對象創建新 graphics 對象
graphics objgraphics = graphics.fromimage(objnewbitmap);
//清除整個繪圖面并以透明背景色填充
objgraphics.clear(color.transparent);
//在指定位置并且按指定大小繪制 原圖片 對象
objgraphics.drawimage(image, new rectangle(0, 0, intnewwidth, intnewheight));
objnewbitmap.save(txtnewpath + txtnewfilename+"."+mfileextname, ici, parameters);
注意lngdefinition是調整清晰度的long型參數,一般50-90 就很清晰了。
因為在使用的時候先是用第一種方法,結果發現把清晰度調得再高都很模糊,后來用第2種方法,發現清晰度為40的時候也很清晰。
小結下吧:
1。2種效果,在清晰度上是graphics 勝出
2。在生成同樣寬度,同樣清晰度前提下,圖片graphics繪制的也比較小,小1/3左右。
如此看來 ms的image的壓縮getthumbnailimage 方法 應該不適合在壓縮圖片上,那適合在什么地方使用呢,希望熟悉的人告訴下哦
新聞熱點
疑難解答
圖片精選