zoukankan      html  css  js  c++  java
  • .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">保存格式,通常可以是jpeg</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">保存格式,通常可以是jpeg</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;
        }

    }

  • 相关阅读:
    VML 和 SVG 的区别
    ie神器htc
    js函数实现递归自调用的方法
    http状态码
    高级算法——贪心算法(背包问题)
    高级算法——贪心算法(找零问题)
    关于arguments.callee
    检索算法——二分查找
    检索算法——顺序查找(最大值、最小值、自组织数据)
    高级排序算法——快速排序(一种分而治之的算法)
  • 原文地址:https://www.cnblogs.com/morvenhuang/p/923352.html
Copyright © 2011-2022 走看看