C#正方形图片的绘制方法

本文实例为大家分享了C#绘制正方形图片的的具体代码,供大家参考,具体内容如下

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Drawing.Imaging;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace treads

{

/// <summary>

/// 制作小正方形

/// </summary>

class Class3

{

private string srcFileName = @"x";//获取图片的路径

private string srcFileName1 = @"x";//要保持图片的新路径

/// <summary>

/// 保存图片

/// </summary>

/// <param name="image">Image 对象</param>

/// <param name="savePath">保存路径</param>

/// <param name="ici">指定格式的编解码参数</param>

private static void SaveImage(Image image, string savePath, ImageCodecInfo ici)

{

//设置 原图片 对象的 EncoderParameters 对象

EncoderParameters parameters = new EncoderParameters(1);

parameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, ((long)100));

image.Save(savePath, ici, parameters);

parameters.Dispose();

}

/// <summary>

/// 获取图像编码解码器的所有相关信息

/// </summary>

/// <param name="mimeType">包含编码解码器的多用途网际邮件扩充协议 (MIME) 类型的字符串</param>

/// <returns>返回图像编码解码器的所有相关信息</returns>

private static ImageCodecInfo GetCodecInfo(string mimeType)

{

ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();

foreach (ImageCodecInfo ici in CodecInfo)

{

if (ici.MimeType == mimeType)

return ici;

}

return null;

}

/// <summary>

/// 计算新尺寸

/// </summary>

/// <param name="width">原始宽度</param>

/// <param name="height">原始高度</param>

/// <param name="maxWidth">最大新宽度</param>

/// <param name="maxHeight">最大新高度</param>

/// <returns></returns>

private static Size ResizeImage(int width, int height, int maxWidth, int maxHeight)

{

//此次2012-02-05修改过=================

if (maxWidth <= 0)

maxWidth = width;

if (maxHeight <= 0)

maxHeight = height;

//以上2012-02-05修改过=================

decimal MAX_WIDTH = (decimal)maxWidth;

decimal MAX_HEIGHT = (decimal)maxHeight;

decimal ASPECT_RATIO = MAX_WIDTH / MAX_HEIGHT;

int newWidth, newHeight;

decimal originalWidth = (decimal)width;

decimal originalHeight = (decimal)height;

if (originalWidth > MAX_WIDTH || originalHeight > MAX_HEIGHT)

{

decimal factor;

// determine the largest factor

if (originalWidth / originalHeight > ASPECT_RATIO)

{

factor = originalWidth / MAX_WIDTH;

newWidth = Convert.ToInt32(originalWidth / factor);

newHeight = Convert.ToInt32(originalHeight / factor);

}

else

{

factor = originalHeight / MAX_HEIGHT;

newWidth = Convert.ToInt32(originalWidth / factor);

newHeight = Convert.ToInt32(originalHeight / factor);

}

}

else

{

newWidth = width;

newHeight = height;

}

return new Size(newWidth, newHeight);

}

/// <summary>

/// 得到图片格式

/// </summary>

/// <param name="name">文件名称</param>

/// <returns></returns>

public static ImageFormat GetFormat(string name)

{

string ext = name.Substring(name.LastIndexOf(".") + 1);

switch (ext.ToLower())

{

case "jpg":

case "jpeg":

return ImageFormat.Jpeg;

case "bmp":

return ImageFormat.Bmp;

case "png":

return ImageFormat.Png;

case "gif":

return ImageFormat.Gif;

default:

return ImageFormat.Jpeg;

}

}

/// <summary>

/// 制作小正方形

/// </summary>

/// <param name="image">图片对象</param>

/// <param name="newFileName">新地址</param>

/// <param name="newSize">长度或宽度</param>

public static void MakeSquareImage(Image image, string newFileName, int newSize)

{

int i = 0;

int width = image.Width;

int height = image.Height;

if (width > height)

i = height;

else

i = width;

Bitmap b = new Bitmap(newSize, newSize);

try

{

Graphics g = Graphics.FromImage(b);

//设置高质量插值法

g.InterpolationMode = InterpolationMode.HighQualityBicubic;

//设置高质量,低速度呈现平滑程度

g.SmoothingMode = SmoothingMode.AntiAlias;

g.PixelOffsetMode = PixelOffsetMode.HighQuality;

//清除整个绘图面并以透明背景色填充

g.Clear(Color.Transparent);

if (width < height)

g.DrawImage(image, new Rectangle(0, 0, newSize, newSize), new Rectangle(0, (height - width) / 2, width, width), GraphicsUnit.Pixel);

else

g.DrawImage(image, new Rectangle(0, 0, newSize, newSize), new Rectangle((width - height) / 2, 0, height, height), GraphicsUnit.Pixel);

SaveImage(b, newFileName, GetCodecInfo("image/" + GetFormat(newFileName).ToString().ToLower()));

}

finally

{

image.Dispose();

b.Dispose();

}

}

/// <summary>

/// 制作小正方形

/// </summary>

/// <param name="fileName">图片文件名</param>

/// <param name="newFileName">新地址</param>

/// <param name="newSize">长度或宽度</param>

public static void MakeSquareImage(string fileName,string newFileName, int newSize)

{

MakeSquareImage(Image.FromFile(fileName), newFileName, newSize);

}

}

}

以上是 C#正方形图片的绘制方法 的全部内容, 来源链接: utcz.com/z/353932.html

回到顶部