日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET基础示例系列之二十:对图片的几种简单处理

發布時間:2025/4/5 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET基础示例系列之二十:对图片的几种简单处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

又有一段時間沒有更新了,缺少學習的熱情了。今天貼幾個圖片處理的小技巧,希望對大家有用:
(1)如何獲取.gif圖片中的各個幀?
(2)如何獲取圖片的縮略圖?
(3)如何“截取”圖片的指定區域?

using?System.Drawing;
using?System.Drawing.Drawing2D;
using?System.Drawing.Imaging;

public?class?ImageHelper
{
????
/**////?<summary>
????
///?獲取圖片中的各幀
????
///?</summary>
????
///?<param?name="pPath">圖片路徑</param>
????
///?<param?name="pSavePath">保存路徑</param>

????public?void?GetFrames(string?pPath,?string?pSavedPath)
????
{
????????Image?gif?
=?Image.FromFile(pPath);
????????FrameDimension?fd?
=?new?FrameDimension(gif.FrameDimensionsList[0]);

????????
//獲取幀數(gif圖片可能包含多幀,其它格式圖片一般僅一幀)
????????int?count?=?gif.GetFrameCount(fd);

????????
//以Jpeg格式保存各幀
????????for?(int?i?=?0;?i?<?count;?i++)
????????
{
????????????gif.SelectActiveFrame(fd,?i);
????????????gif.Save(pSavedPath?
+?"\\frame_"?+?i?+?".jpg",?ImageFormat.Jpeg);
????????}

????}


????
/**////?<summary>
????
///?獲取圖片縮略圖
????
///?</summary>
????
///?<param?name="pPath">圖片路徑</param>
????
///?<param?name="pSavePath">保存路徑</param>
????
///?<param?name="pWidth">縮略圖寬度</param>
????
///?<param?name="pHeight">縮略圖高度</param>
????
///?<param?name="pFormat">保存格式,通??梢允莏peg</param>

????public?void?GetSmaller(string?pPath,?string?pSavedPath,?int?pWidth,?int?pHeight)
????
{
????????
try
????????
{
????????????Image?smallerImg;
????????????Image?originalImg?
=?Image.FromFile(pPath);
????????????Image.GetThumbnailImageAbort?callback?
=?new?Image.GetThumbnailImageAbort(ThumbnailCallback);
????????????smallerImg?
=?originalImg.GetThumbnailImage(pWidth,?pHeight,?callback,?IntPtr.Zero);
????????????smallerImg.Save(pSavedPath?
+?"\\smaller.jpg",?ImageFormat.Jpeg);
????????}

????????
catch?(Exception?x)
????????
{
????????????
//
????????}

????}


????
/**////?<summary>
????
///?獲取圖片指定部分
????
///?</summary>
????
///?<param?name="pPath">圖片路徑</param>
????
///?<param?name="pSavePath">保存路徑</param>
????
///?<param?name="pPartStartPointX">目標圖片開始繪制處的坐標X值(通常為)</param>
????
///?<param?name="pPartStartPointY">目標圖片開始繪制處的坐標Y值(通常為)</param>
????
///?<param?name="pPartWidth">目標圖片的寬度</param>
????
///?<param?name="pPartHeight">目標圖片的高度</param>
????
///?<param?name="pOrigStartPointX">原始圖片開始截取處的坐標X值</param>
????
///?<param?name="pOrigStartPointY">原始圖片開始截取處的坐標Y值</param>
????
///?<param?name="pFormat">保存格式,通??梢允莏peg</param>

????public?void?GetPart(string?pPath,?string?pSavedPath,?int?pPartStartPointX,?int?pPartStartPointY,?int?pPartWidth,?int?pPartHeight,?int?pOrigStartPointX,?int?pOrigStartPointY)
????
{
????????Image?originalImg?
=?Image.FromFile(pPath);

????????Bitmap?partImg?
=?new?Bitmap(pPartWidth,?pPartHeight);???
????????Graphics?graphics?
=?Graphics.FromImage(partImg);
????????Rectangle?destRect?
=?new?Rectangle(new?Point(pPartStartPointX,?pPartStartPointY),?new?Size(pPartWidth,?pPartHeight));//目標位置
????????Rectangle?origRect?=?new?Rectangle(new?Point(pOrigStartPointX,?pOrigStartPointY),?new?Size(pPartWidth,?pPartHeight));//原圖位置(默認從原圖中截取的圖片大小等于目標圖片的大小)

????????graphics.DrawImage(originalImg,?destRect,origRect,GraphicsUnit.Pixel);
????????partImg.Save(pSavedPath?
+?"\\part.jpg",?ImageFormat.Jpeg);
????}


????
public?bool?ThumbnailCallback()
????
{
????????
return?false;
????}

}

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的.NET基础示例系列之二十:对图片的几种简单处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。