C#图片处理工具类 含绘制水印、阴影、保存等

   一个C#写的图片处理基础类,功能包括获取或设置要修改的图像路径、获取或设置在画的图片路径(水印图片)、获取或设置水印在修改图片中的右边距、获取或设置水印在修改图片中距底部的高度、获取或设置要绘制水印的透明度,注意是原来图片透明度的百分比、获取或设置要输出图像的路径、绘制水印、绘制图形坐标、绘制阴影图像、保存文件等功能:

  view sourceprint?001using System;

  002using System.Collections.Generic;

  003using System.Linq;

  004using System.Text;

  005using System.IO;

  006using System.Drawing;

  007using System.Drawing.Drawing2D;

  008using System.Drawing.Imaging;

  009namespace CLB.Utility.Tools

  010{

  011 public class ImageModification

  012 {

  013 #region "member fields"

  014 private string modifyImagePath = null;

  015 private string drawedImagePath = null;

  016 private int rightSpace;

  017 private int bottoamSpace;

  018 private int lucencyPercent = 70;

  019 private string outPath = null;

  020 #endregion

  021 public ImageModification()

  022 {

  023 }

  024 #region "propertys"

  025 ///

  026 /// 获取或设置要修改的图像路径

  027 ///

  028 public string ModifyImagePath

  029 {

  030 get { return this.modifyImagePath; }

  031 set { this.modifyImagePath = value; }

  032 }

  033 ///

  034 /// 获取或设置在画的图片路径(水印图片)

  035 ///

  036 public string DrawedImagePath

  037 {

  038 get { return this.drawedImagePath; }

  039 set { this.drawedImagePath = value; }

  040 }

  041 ///

  042 /// 获取或设置水印在修改图片中的右边距

  043 ///

  044 public int RightSpace

  045 {

  046 get { return this.rightSpace; }

  047 set { this.rightSpace = value; }

  048 }

  049 //获取或设置水印在修改图片中距底部的高度

  050 public int BottoamSpace

  051 {

  052 get { return this.bottoamSpace; }

  053 set { this.bottoamSpace = value; }

  054 }

  055 ///

  056 /// 获取或设置要绘制水印的透明度,注意是原来图片透明度的百分比

  057 ///

  058 public int LucencyPercent

  059 {

  060 get { return this.lucencyPercent; }

  061 set

  062 {

  063 if (value >= 0 && value <= 100)

  064 this.lucencyPercent = value;

  065 }

  066 }

  067 ///

  068 /// 获取或设置要输出图像的路径

  069 ///

  070 public string OutPath

  071 {

  072 get { return this.outPath; }

  073 set { this.outPath = value; }

  074 }

  075 #endregion

  076 #region "methods"

  077 ///

  078 /// 开始绘制水印

  079 ///

  080 public void DrawImage()

  081 {

  082 Image modifyImage = null;

  083 Image drawedImage = null;

  084 Graphics g = null;

  085 try

  086 {

  087 //建立图形对象

  088 modifyImage = Image.FromFile(this.ModifyImagePath);

  089 drawedImage = Image.FromFile(this.DrawedImagePath);

  090 g = Graphics.FromImage(modifyImage);

  091 //获取要绘制图形坐标

  092 int x = modifyImage.Width - this.rightSpace;

  093 int y = modifyImage.Height - this.BottoamSpace;

  094 //设置颜色矩阵

  095 float[][] matrixItems ={

  096 new float[] {1, 0, 0, 0, 0},

  097 new float[] {0, 1, 0, 0, 0},

  098 new float[] {0, 0, 1, 0, 0},

  099 new float[] {0, 0, 0, (float)this.LucencyPercent/100f, 0},

  100 new float[] {0, 0, 0, 0, 1}};

  101 ColorMatrix colorMatrix = new ColorMatrix(matrixItems);

  102 ImageAttributes imgAttr = new ImageAttributes();

  103 imgAttr.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);

  104 //绘制阴影图像

  105 g.DrawImage(

  106 drawedImage,

  107 new Rectangle(x, y, drawedImage.Width, drawedImage.Height),

  108 0, 0, drawedImage.Width, drawedImage.Height,

  109 GraphicsUnit.Pixel, imgAttr);

  110 //保存文件

  111 string[] allowImageType = { ".jpg", ".gif", ".png", ".bmp", ".tiff", ".wmf", ".ico" };

  112 FileInfo file = new FileInfo(this.ModifyImagePath);

  113 ImageFormat imageType = ImageFormat.Gif;

  114 switch (file.Extension.ToLower())

  115 {

  116 case ".jpg":

  117 imageType = ImageFormat.Jpeg;

  118 break;

  119 case ".gif":

  120 imageType = ImageFormat.Gif;

  121 break;

  122 case ".png":

  123 imageType = ImageFormat.Png;

  124 break;

  125 case ".bmp":

  126 imageType = ImageFormat.Bmp;

  127 break;

  128 case ".tif":

  129 imageType = ImageFormat.Tiff;

  130 break;

  131 case ".wmf":

  132 imageType = ImageFormat.Wmf;

  133 break;

  134 case ".ico":

  135 imageType = ImageFormat.Icon;

  136 break;

  137 default:

  138 break;

  139 }

  140 MemoryStream ms = new MemoryStream();

  141 modifyImage.Save(ms, imageType);

  142 byte[] imgData = ms.ToArray();

  143 modifyImage.Dispose();

  144 drawedImage.Dispose();

  145 g.Dispose();

  146 FileStream fs = null;

  147 if (this.OutPath == null || this.OutPath == "")

  148 {

  149 File.Delete(this.ModifyImagePath);

  150 fs = new FileStream(this.ModifyImagePath, FileMode.Create, FileAccess.Write);

  151 }

  152 else

  153 {

  154 fs = new FileStream(this.OutPath, FileMode.Create, FileAccess.Write);

  155 }

  156 if (fs != null)

  157 {

  158 fs.Write(imgData, 0, imgData.Length);

  159 fs.Close();

  160 }

  161 }

  162 finally

  163 {

  164 try

  165 {

  166 drawedImage.Dispose();

  167 modifyImage.Dispose();

  168 g.Dispose();

  169 }

  170 catch { ;}

  171 }

  172 }

  173 #endregion

  174 }

  175}

时间: 2024-10-28 21:30:48

C#图片处理工具类 含绘制水印、阴影、保存等的相关文章

Android开发之图片切割工具类定义与用法示例

本文实例讲述了Android开发之图片切割工具类定义与用法.分享给大家供大家参考,具体如下: 该工具类比较常见于拼图游戏中使用.这里演示了类基本的定义与使用方法. 图片切割工具类定义: public class ImageSplitter { /** * 将图片切成 , piece *piece * * @param bitmap * @param piece * @return */ public static List<ImagePiece> split(Bitmap bitmap, in

图片-Android 工具类里面方法要传个Activity 要怎么写呢?

问题描述 Android 工具类里面方法要传个Activity 要怎么写呢? Android 工具类里面方法要传个Activity 要怎么写呢? 解决方案 你在类里面定义一个变量,方法的时候直接赋值不就好了 解决方案二: http://www.oschina.net/code/snippet_2410256_49528 解决方案三: Android在Adapter里面调用Activity的方法/变量

java图片裁切工具类

package com.yanek.util; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.Ima

android里图片下载工具类AsyncImageLoader分析

 http://www.cnblogs.com/slider/archive/2011/11/22/2258942.html

ASP.NET简单好用功能齐全图片上传工具类(水印、缩略图、裁剪等)_实用技巧

使用方法: UploadImage ui = new UploadImage(); /***可选参数***/ ui.SetWordWater = "哈哈";//文字水印 // ui.SetPicWater = Server.MapPath("2.png");//图片水印(图片和文字都赋值图片有效) ui.SetPositionWater = 4;//水印图片的位置 0居中.1左上角.2右上角.3左下角.4右下角 ui.SetSmallImgHeight = &quo

ASP.NET 图片上传工具类 upload image简单好用功能齐全

原文:ASP.NET 图片上传工具类 upload image简单好用功能齐全 使用方法: UploadImage ui = new UploadImage(); /***可选参数***/ ui.SetWordWater = "哈哈";//文字水印 // ui.SetPicWater = Server.MapPath("2.png");//图片水印(图片和文字都赋值图片有效) ui.SetPositionWater = 4;//水印图片的位置 0居中.1左上角.2右

Java图像处理工具类_java

本工具类的功能:缩放图像.切割图像.图像类型转换.彩色转黑白.文字水印.图片水印等 复制代码 代码如下: package net.kitbox.util; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Re

使用JCrop进行图片裁剪,裁剪js说明,裁剪预览,裁剪上传,裁剪设计的图片处理的工具类和代码

 1.要想制作图片裁剪功能,可以使用网上的裁剪工具JCrop,网址是:https://github.com/tapmodo/Jcrop/ 案例效果如下: 2.引入JCrop的js代码,具体要引入那些js可以参考JCrop案例: 3.编写的html代码如下: <div id="light" class="white_content">        <div class="vatitlee">            封面

安卓LibGDX游戏引擎开发教程(六) 图形图像的绘制(下)图片整合工具的使用

在上一篇文章中,我们提到了图片必须是2的n次方的问题.但是随着Libgdx的不断完善和发展,使用一些 工具就可以很好的解决了这样一个问题,但是它的功能又不仅仅只限于此,那么下面就来让我们看看 TexturePacker-Gui工具的使用,我们又称之它为图片整合工具. 一.TexturePacker-Gui简介 TexturePacker-Gui是一个可视化版本的图片整合工具.这个工具的用途很简单,就是一个将小 图片整合成一张大图片,在把大图片打包成可查找的图片.而且通过TexturePacker