图片类处理

1、读取图片两种方式

System.Drawing.Bitmap imgFrom = new System.Drawing.Bitmap(fromImg)

System.Drawing.Image gif = System.Drawing.Image.FromFile(fromImg);

2、把图片从一个绘制到另一个,首先要先实例化一个Bitmap(背景默认黑色)

System.Drawing.Bitmap bmpOut = new System.Drawing.Bitmap(Width, Height);

using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmpOut))
{
g.FillRectangle(System.Drawing.Brushes.White, 0, 0, bmpOut.Width, bmpOut.Height); //填充背景颜色
g.DrawImage(imgIn, new System.Drawing.Rectangle(0, 0, Width, Height), new System.Drawing.Rectangle(0, 0, Width, Height), System.Drawing.GraphicsUnit.Pixel);
}

3、如果需要把特定颜色去掉

bmpOut .MakeTransparent(System.Drawing.Color.FromArgb(252, 252, 252)); //把该颜色设置为透明

4、图片保存后,一般会比较大,可以设置压缩

System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters();
long[] quality = new long[1] { 100 };
encoderParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);

bmpOut.Save(fileSaveUrl, GetCodecInfo("image/gif"), encoderParams);

5、完整代码

public void Cut(System.Drawing.Bitmap imgIn, int Width, int Height, string fileSaveUrl)
{
System.Drawing.Imaging.FrameDimension fd = new System.Drawing.Imaging.FrameDimension(imgIn.FrameDimensionsList[0]);
if (imgIn.GetFrameCount(fd) > 0)
{
imgIn.SelectActiveFrame(fd, 0); //取第一帧图片
imgIn.MakeTransparent(System.Drawing.Color.FromArgb(252, 252, 252)); //把该颜色设置为透明
System.Drawing.Bitmap bmpOut = new System.Drawing.Bitmap(Width, Height);
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmpOut))
{
g.FillRectangle(System.Drawing.Brushes.White, 0, 0, bmpOut.Width, bmpOut.Height);
g.DrawImage(imgIn, new System.Drawing.Rectangle(0, 0, Width, Height), new System.Drawing.Rectangle(0, 0, Width, Height), System.Drawing.GraphicsUnit.Pixel);
}

//以下代码为保存图片时,设置压缩质量
System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters();
long[] quality = new long[1] { 100 };
encoderParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);

bmpOut.Save(fileSaveUrl, GetCodecInfo("image/gif"), encoderParams);
}
}

时间: 2024-12-29 12:05:57

图片类处理的相关文章

用GCD的方式,加载网络图片(主线程加载图片+类扩展方式)

用GCD的方式,加载网络图片(主线程加载图片+类扩展方式) 用两种方法来实现网络加载图片 方法1:实现的效果:先加载背景色灰色,两秒后加载图片 - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor=[UIColor grayColor]; //刷新UI(在主线程中刷新UI!!!) --- 一般方法 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PR

【PDF单页转化为图片输出 注意:英文或图片类的PDF可转化,中文抛异常】

1 public static void main(String[] args) throws IOException 2 { 3 /** 4 * PDF单页转化为图片输出 注意:英文或图片类的PDF可转化,中文抛异常 5 */ 6 PDDocument doc; 7 try 8 { 9 String inputFile = "F:\\java56班\\eclipse-SDK-4.2-win32\\iText入门基础教程[2].pdf"; 10 String imagepath = &

OpenCV图片类cv::Mat和QImage之间进行转换(好多相关文章)

在使用Qt和OpenCV混合编程时,我们有时需要在两种图片类cv::Mat和QImage之间进行转换,下面的代码参考了网上这个帖子: //##### cv::Mat ---> QImage ##### // Shallow copy QImage mat2qimage_ref(cv::Mat &m, QImage::Format format) { return QImage(m.data, m.cols, m.rows, m.step, format); } // Deep copy QI

基于jQuery适合做图片类网站的特效

分享一款基于jquery适合做图片类网站的特效.这是一款鼠标经过图片滑动弹出标题效果代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="common"> <ul> <li class="listbox mr20"> <div class="listimg"> <a href="/"><img src="im

Convert between cv::Mat and QImage 两种图片类转换

在使用Qt和OpenCV混合编程时,我们有时需要在两种图片类cv::Mat和QImage之间进行转换,下面的代码参考了网上这个帖子: //##### cv::Mat ---> QImage ##### // Shallow copy QImage mat2qimage_ref(cv::Mat &m, QImage::Format format) { return QImage(m.data, m.cols, m.rows, m.step, format); } // Deep copy QI

LruCache缓存处理及异步加载图片类的封装

Android中的缓存处理及异步加载图片类的封装 一.缓存介绍: (一).Android中缓存的必要性: 智能手机的缓存管理应用非常的普遍和需要,是提高用户体验的有效手段之一. 1.没有缓存的弊端: 流量开销:对于客户端——服务器端应用,从远程获取图片算是经常要用的一个功能,而图片资源往往会消耗比较大的流量. 加载速度:如果应用中图片加载速度很慢的话,那么用户体验会非常糟糕. 那么如何处理好图片资源的获取和管理呢?异步下载+本地缓存 2.缓存带来的好处: 1. 服务器的压力大大减小: 2. 客户

自动加载图片类

算是接着第一篇内容的衍生吧 上次说了简单的根据字节流进行判断类型的,这次贴出工作中用到的一个类 由于工作的需求是需要分开SVG与常规图片的分别,所以这里就简单判断了非常规图片类型的都是SVG 其中的ImageType是一个外部静态类,自行添加就好 而SVG是直接拿了 https://github.com/chndyyang/AS3SVGRenderer 的代码进行编译的 package { import com.lorentz.SVG.display.SVGDocument; import co

发一个自己封装的PNG透明图片类。

//-----------pnglib.h #include "stdafx.h" #include "afxdialogex.h" #include "atlimage.h" class DrawImage { public: DrawImage(UINT, LPCTSTR); DrawImage(HWND, UINT, LPCTSTR); ~DrawImage(); public: void Draw(int, int, int, int);

html5 绘制图片 drawImage

要在绘图上下文中绘制图片,可以使用 drawImage 方法.该方法有三种不同的参数:? drawImage(image,dx,dy)? drawImage(image,dx,dy,dw,dh)? drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh)其中的 image 参数可以是 HTMLImageElement.HTMLCanvasElement 和HTMLVideoElement 中的任一个对象.绘制参数的含义可以参看下图: 异常:如果第一个参数不是指定的元素类型