zoukankan      html  css  js  c++  java
  • 【C#公共帮助类】 Image帮助类

    大家知道,开发项目除了数据访问层很重要外,就是Common了,这里就提供了强大且实用的工具。

    【C#公共帮助类】 Convert帮助类

    Image类:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Drawing.Imaging;
    using System.Drawing;
    using System.Web;
    namespace Common
    {
      public  static class Image
      {
    
          #region 图片格式转换
          /// <summary>
          /// 图片格式转换
          /// </summary>
          /// <param name="OriFilename">原始文件相对路径</param>
          /// <param name="DesiredFilename">生成目标文件相对路径</param>
          /// <returns></returns>
          ///  JPG采用的是有损压缩所以JPG图像有可能会降低图像清晰度,而像素是不会降低的   
          ///  GIF采用的是无损压缩所以GIF图像是不会降低原图图像清晰度和像素的,但是GIF格式只支持256色图像。
          public static bool ConvertImage(string OriFilename, string DesiredFilename)
          {
              string extname = DesiredFilename.Substring(DesiredFilename.LastIndexOf('.')+1).ToLower();
              ImageFormat DesiredFormat;
              //根据扩张名,指定ImageFormat
              switch (extname)
              {
                  case "bmp":
                      DesiredFormat = ImageFormat.Bmp;
                      break;
                  case "gif":
                      DesiredFormat = ImageFormat.Gif;
                      break;
                  case "jpeg":
                      DesiredFormat = ImageFormat.Jpeg;
                      break;
                  case "ico":
                      DesiredFormat = ImageFormat.Icon;
                      break;
                  case "png":
                      DesiredFormat = ImageFormat.Png;
                      break;
                  default:
                      DesiredFormat = ImageFormat.Jpeg;
                      break;
              }
              try
              {
                  System.Drawing.Image imgFile = System.Drawing.Image.FromFile(WebPathTran(OriFilename));
                  imgFile.Save(WebPathTran(DesiredFilename), DesiredFormat);
                  return true;
              }
              catch 
              {
                  return false;
              }
          }
            #endregion
    
    
          #region 图片缩放
          /// <summary>
          /// 图片固定大小缩放
          /// </summary>
          /// <param name="OriFileName">源文件相对地址</param>
          /// <param name="DesiredFilename">目标文件相对地址</param>
          /// <param name="IntWidth">目标文件宽</param>
          /// <param name="IntHeight">目标文件高</param>
          /// <param name="imageFormat">图片文件格式</param>
          public static bool ChangeImageSize(string OriFileName, string DesiredFilename, int IntWidth, int IntHeight, ImageFormat imageFormat)
            {
                string SourceFileNameStr =WebPathTran(OriFileName); //来源图片名称路径
                string TransferFileNameStr = WebPathTran(DesiredFilename); //目的图片名称路径
                 FileStream myOutput =null;
                try
                {
                    System.Drawing.Image.GetThumbnailImageAbort myAbort = new System.Drawing.Image.GetThumbnailImageAbort(imageAbort);
                    Image SourceImage = System.Drawing.Image.FromFile(OriFileName);//来源图片定义
                    Image TargetImage = SourceImage.GetThumbnailImage(IntWidth, IntHeight, myAbort, IntPtr.Zero);  //目的图片定义
                    //将TargetFileNameStr的图片放宽为IntWidth,高为IntHeight 
                    myOutput = new FileStream(TransferFileNameStr, FileMode.Create, FileAccess.Write, FileShare.Write);
                    TargetImage.Save(myOutput, imageFormat);
                    myOutput.Close();
                    return true;
                }
                catch 
                {
                    myOutput.Close();
                    return false;
                }
           
              
            }
    
          private static  bool imageAbort()
            {
                return false;
            }
          #endregion
    
    
          #region 文字水印
            /// <summary>
            /// 文字水印
            /// </summary>
            /// <param name="wtext">水印文字</param>
            /// <param name="source">原图片物理文件名</param>
            /// <param name="target">生成图片物理文件名</param>
            public static bool ImageWaterText(string wtext,string source, string target)
            {
                bool resFlag = false;
                Image image = Image.FromFile(source);
                Graphics graphics = Graphics.FromImage(image);
                try
                {
                  graphics.DrawImage(image, 0, 0, image.Width, image.Height);
                  Font font = new System.Drawing.Font("Verdana", 60);
                  Brush brush = new System.Drawing.SolidBrush(System.Drawing.Color.Green);
                  graphics.DrawString(wtext, font, brush, 35, 35);
                  image.Save(target);
                  resFlag = true;
                }
                catch (Exception)
                {
    
                    throw;
                }
                finally 
                {
                    graphics.Dispose();
                    image.Dispose();
                  
                }
                  return resFlag;
            }
    
    
            #endregion
    
    
          #region 图片水印
    
            /// <summary>
            /// 在图片上生成图片水印
            /// </summary>
            /// <param name="Path">原服务器图片路径</param>
            /// <param name="Path_syp">生成的带图片水印的图片路径</param>
            /// <param name="Path_sypf">水印图片路径</param>
          public static bool ImageWaterPic(string source, string target, string waterPicSource)
            {
                bool resFlag = false;
                Image sourceimage = Image.FromFile(source);
                Graphics sourcegraphics = Graphics.FromImage(sourceimage);
                Image waterPicSourceImage = Image.FromFile(waterPicSource);
                try
                {
                    sourcegraphics.DrawImage(waterPicSourceImage, new System.Drawing.Rectangle(sourceimage.Width - waterPicSourceImage.Width, sourceimage.Height - waterPicSourceImage.Height, waterPicSourceImage.Width, waterPicSourceImage.Height), 0, 0, waterPicSourceImage.Width, waterPicSourceImage.Height, GraphicsUnit.Pixel);
                    sourceimage.Save(target);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    sourcegraphics.Dispose();
                    sourceimage.Dispose();
                    waterPicSourceImage.Dispose();
                }
                return resFlag;
                
            }
    
            #endregion
    
    
          /// <summary>
          /// 路径转换(转换成绝对路径)
          /// </summary>
          /// <param name="path"></param>
          /// <returns></returns>
          private static string WebPathTran(string path)
          {
              try
              {
                  return HttpContext.Current.Server.MapPath(path);
              }
              catch
              {
                  return path;
              }
          }
        }
    }
  • 相关阅读:
    mybatis分页插件pagehelper 5.1.2遇到的问题
    IDEA中SSM框架转变为SOA dubbo框架 zookeeper注册中心
    zookeeper注册中心搭建
    dubbo搭建
    作业三:程序设计大赛项目管理WBS
    无效的绑定声明(未找到)包名.mapper.XXXMapper.方法。IDEA中接口与映射文件未在一起问题
    IDEA中循环依赖解决方法
    Linux环境安装jdk
    在MainActivity的内部静态类PlaceholderFragment 类中的onCreateView中获取fragment_main.xml中控件
    Eclipse: Android Device Chooser
  • 原文地址:https://www.cnblogs.com/eadily-dream/p/5525899.html
Copyright © 2011-2022 走看看