关于system.drawing.imaging类的说明和范例

2020-01-16 10:33栏目:竞技宝app
TAG:

voidDirPicCutSize()//{ImagefromImage=null;Bitmapbitmap1=null;Graphicsg1=null;ImageImage1=null;Bitmapbitmap2=null;Graphicsg2=null;stringstrFromDir=Thread.CurrentThread.Name;DirectoryInfomyD=newDirectoryInfo(strFromDir);FileInfo[]myF=myD.GetFiles();if(myF.Length0){bitmap1=newBitmap(w1,h1);//创建新图位图g1=Graphics.FromImage(bitmap1);//创建作图区域bitmap2=newBitmap(w2,h2);g2=Graphics.FromImage(bitmap2);foreach(FileInfomyfileinmyF)//{stringp=myfile.ToString();//FileInfomyfile不带路径,但带后缀名的文件名stringFpath1=strFromDir+p;fromImage=Image.FromFile(Fpath1);//原图片文件g1.DrawImage(fromImage,0,0,newRectangle(offsetX,offsetY,w1,h1),GraphicsUnit.Pixel);//截取原图相应区域写入作图区Image1=Image.FromHbitmap(bitmap1.GetHbitmap());//从作图区生成新图g2.DrawImage(Image1,0,0,w2,h2);//在指定坐标处画指定大小的图片try{File.Delete(Fpath1);bitmap2.Save(Fpath1,ImageFormat.Jpeg);}catch{;}}}fromImage.Dispose();g1.Dispose();bitmap1.Dispose();Image1.Dispose();g2.Dispose();bitmap2.Dispose();m_bok=true;}

方法一:

代码段1
=========================
System.Drawing.Image image =
System.Drawing.Image.FromFile(originalFilename);
System.Drawing.Size size = GetImageSize(image.Width, image.Height,
information.MaximumDimension);
System.Drawing.Image bitmap = new System.Drawing.Bitmap(size.Width,
size.Height);
System.Drawing.Graphics graphics =
System.Drawing.Graphics.FromImage(bitmap);
graphics.InterpolationMode =
System.Drawing.Drawing2D.InterpolationMode.High;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
graphics.Clear(information.BackgroundColor);
graphics.DrawImage(image, new System.Drawing.Rectangle(0, 0, bitmap.Width,
bitmap.Height), new System.Drawing.Rectangle(0, 0, image.Width,
image.Height), System.Drawing.GraphicsUnit.Pixel);
graphics.Dispose();

C# 代码

代码段2
============================
//原始图片名称
string originalFilename = "c:\222.jpg";
//生成的高质量图片名称
string strGoodFile = "c:\222-small-good.jpg";
//生成的低质量图片名称
string strBadFile = "c:\222-small-bad.jpg";
//缩小的倍数
int iScale = 3;

图片 1图片 2/// <summary>
图片 3 /// 生成缩略图
图片 4 /// </summary>
图片 5 /// <param name="originalImagePath">源图路径(物理路径)</param>
图片 6 /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
图片 7 /// <param name="width">缩略图宽度</param>
图片 8 /// <param name="height">缩略图高度</param>
图片 9 /// <param name="mode">生成缩略图的方式</param>
图片 10 public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
图片 11图片 12 ...{
图片 13Image originalImage = Image.FromFile(originalImagePath);
图片 14
图片 15int towidth = width;
图片 16int toheight = height;
图片 17
图片 18int x = 0;
图片 19int y = 0;
图片 20int ow = originalImage.Width;
图片 21int oh = originalImage.Height;
图片 22
图片 23switch (mode)
图片 24图片 25...{
图片 26 case "HW"://指定高宽缩放(可能变形)
图片 27break;
图片 28 case "W"://指定宽,高按比例
图片 29toheight = originalImage.Height * width/originalImage.Width;
图片 30break;
图片 31 case "H"://指定高,宽按比例
图片 32towidth = originalImage.Width * height/originalImage.Height;
图片 33break;
图片 34 case "Cut"://指定高宽裁减
图片 35if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight)
图片 36图片 37...{
图片 38 oh = originalImage.Height;
图片 39 ow = originalImage.Height*towidth/toheight;
图片 40 y = 0;
图片 41 x = (originalImage.Width - ow)/2;
图片 42}
图片 43else
图片 44图片 45...{
图片 46 ow = originalImage.Width;
图片 47 oh = originalImage.Width*height/towidth;
图片 48 x = 0;
图片 49 y = (originalImage.Height - oh)/2;
图片 50}
图片 51break;
图片 52 case "CutA"://指定高宽裁减(不变形)自定义
图片 53if(ow<=towidth&&oh<=toheight)
图片 54图片 55...{
图片 56 x=-(towidth-ow)/2;
图片 57 y=-(toheight-oh)/2;
图片 58 ow=towidth;
图片 59 oh=toheight;
图片 60}
图片 61else
图片 62图片 63...{
图片 64 if(ow>oh)//宽大于高
图片 65图片 66 ...{
图片 67x=0;
图片 68y=-(ow-oh)/2;
图片 69oh=ow;
图片 70 }
图片 71 else//高大于宽
图片 72图片 73 ...{
图片 74y=0;
图片 75x=-(oh-ow)/2;
图片 76ow=oh;
图片 77 }
图片 78}
图片 79break;
图片 80 default :
图片 81break;
图片 82}
图片 83
图片 84//新建一个bmp图片
图片 85Image bitmap = new System.Drawing.Bitmap(towidth,toheight);
图片 86
图片 87//新建一个画板
图片 88Graphics g = System.Drawing.Graphics.FromImage(bitmap);
图片 89
图片 90//设置高质量插值法
图片 91g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
图片 92
图片 93//设置高质量,低速度呈现平滑程度
图片 94g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
图片 95
图片 96//清空画布并以白色背景色填充
图片 97g.Clear(Color.White);
图片 98
图片 99//在指定位置并且按指定大小绘制原图片的指定部分
图片 100g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
图片 101 new Rectangle(x, y, ow,oh),
图片 102 GraphicsUnit.Pixel);
图片 103
图片 104try
图片 105图片 106...{
图片 107 //以jpg格式保存缩略图
图片 108 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
图片 109}
图片 110catch(System.Exception e)
图片 111图片 112...{
图片 113 throw e;
图片 114}
图片 115finally
图片 116图片 117...{
图片 118 originalImage.Dispose();
图片 119 bitmap.Dispose();
图片 120 g.Dispose();
图片 121}
图片 122 }
图片 123
图片 124

//从文件取得图片对象
System.Drawing.Image image = System.Drawing.Image.FromFile(originalFilename);
//取得图片大小
System.Drawing.Size size = new Size(image.Width / iScale , image.Height / iScale);
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(size.Width,size.Height);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空一下画布
g.Clear(Color.Blue);
//在指定位置画图
g.DrawImage(image, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
new System.Drawing.Rectangle(0, 0, image.Width,image.Height),
System.Drawing.GraphicsUnit.Pixel);
//保存高清晰度的缩略图
bitmap.Save(strGoodFile, System.Drawing.Imaging.ImageFormat.Jpeg);
//取得原图像的普通缩略图
System.Drawing.Image img = image.GetThumbnailImage(image.Width / iScale, image.Height / iScale, null, IntPtr.Zero);
//保存普通缩略图
img.Save(strBadFile, System.Drawing.Imaging.ImageFormat.Jpeg);

方法二:

g.Dispose();
MessageBox.Show("生成完毕");

C# 代码

俺自己写的一段原图+缩略图代码
===============================
using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

版权声明:本文由龙竞技官网发布于竞技宝app,转载请注明出处:关于system.drawing.imaging类的说明和范例