IO帮助类是什么?IO帮助类的实例介绍(附代码)
导读:收集整理的这篇文章主要介绍了IO帮助类是什么?IO帮助类的实例介绍(附代码),觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家带来的内容是介绍IO帮助类是什么?IO帮助类的实例介绍(附代码)。有一定的参考价值,有需要的朋友可以...
收集整理的这篇文章主要介绍了IO帮助类是什么?IO帮助类的实例介绍(附代码),觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家带来的内容是介绍IO帮助类是什么?IO帮助类的实例介绍(附代码)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。using System;
using System.IO;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.XMl.Serialization;
namespace ZMM.Core{
/// summary>
/// IO帮助类 /// /summary>
public class IOHelPEr {
//是否已经加载了JPEG编码解码器 PRivate static bool _isloadjpegcodec = false;
//当前系统安装的JPEG编码解码器 private static ImageCodecInfo _jpegcodec = null;
/// summary>
/// 获得文件物理路径 /// /summary>
/// returns>
/returns>
public static string GetMapPath(string path) {
if (HttpContext.current != null) {
return HttpContext.Current.Server.MapPath(path);
}
else {
return System.Web.Hosting.Hostingenvironment.MapPath(path);
}
}
#region 序列化 /// summary>
/// XML序列化 /// /summary>
/// param name="obj">
序列对象/param>
/// param name="filePath">
XML文件路径/param>
/// returns>
是否成功/returns>
public static bool SerializeToXml(object obj, string filePath) {
bool result = false;
FileStream fs = null;
try {
fs = new FileStream(filePath, FileMode.Create, FileAccess.WrITe, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(fs, obj);
result = true;
}
catch (Exception ex) {
throw ex;
}
finally {
if (fs != null) fs.Close();
}
return result;
}
/// summary>
/// XML反序列化 /// /summary>
/// param name="type">
目标类型(Type类型)/param>
/// param name="filePath">
XML文件路径/param>
/// returns>
序列对象/returns>
public static object DeserializeFromXML(Type type, string filePath) {
FileStream fs = null;
try {
fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(type);
return serializer.Deserialize(fs);
}
catch (Exception ex) {
throw ex;
}
finally {
if (fs != null) fs.Close();
}
}
#endregion #region 水印,缩略图 /// summary>
/// 获得当前系统安装的JPEG编码解码器 /// /summary>
/// returns>
/returns>
public static ImageCodecInfo GetJPEGCodec() {
if (_isloadjpegcodec == true) return _jpegcodec;
ImageCodecInfo[] codecsList = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo codec in codecsList) {
if (codec.MimeType.IndexOf("jpeg") >
-1) {
_jpegcodec = codec;
break;
}
}
_isloadjpegcodec = true;
return _jpegcodec;
}
/// summary>
/// 生成缩略图 /// /summary>
/// param name="imagePath">
图片路径/param>
/// param name="thumbPath">
缩略图路径/param>
/// param name="width">
缩略图宽度/param>
/// param name="height">
缩略图高度/param>
/// param name="mode">
生成缩略图的方式/param>
public static void GenerateThumb(string imagePath, string thumbPath, int width, int height, string mode) {
Image image = Image.FromFile(imagePath);
string extension = imagePath.Substring(imagePath.LastIndexOf(".")).ToLower();
ImageFormat imageFormat = null;
switch (extension) {
case ".jpg": case ".jpeg": imageFormat = ImageFormat.Jpeg;
break;
case ".bmp": imageFormat = ImageFormat.Bmp;
break;
case ".png": imageFormat = ImageFormat.Png;
break;
case ".gif": imageFormat = ImageFormat.Gif;
break;
default: imageFormat = ImageFormat.Jpeg;
break;
}
int toWidth = width >
0 ? width : image.Width;
int toHeight = height >
0 ? height : image.Height;
int x = 0;
int y = 0;
int ow = image.Width;
int oh = image.Height;
switch (mode) {
case "HW"://指定高宽缩放(可能变形) break;
case "W"://指定宽,高按比例 toHeight = image.Height * width / image.Width;
break;
case "H"://指定高,宽按比例 toWidth = image.Width * height / image.Height;
break;
case "Cut"://指定高宽裁减(不变形) if ((double)image.Width / (double)image.Height >
(double)toWidth / (double)toHeight) {
oh = image.Height;
ow = image.Height * toWidth / toHeight;
y = 0;
x = (image.Width - ow) / 2;
}
else {
ow = image.Width;
oh = image.Width * height / toWidth;
x = 0;
y = (image.Height - oh) / 2;
}
break;
default: break;
}
//新建一个bmp Image bitmap = new Bitmap(toWidth, toHeight);
//新建一个画板 Graphics g = Graphics.FromImage(bitmap);
//设置高质量插值法 g.InterpolationMode = InterpolationMode.High;
//设置高质量,低速度呈现平滑程度 g.SmoothingMode = SmoothingMode.HighQuality;
//清空画布并以透明背景色填充 g.Clear(Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分 g.DrawImage(image, new Rectangle(0, 0, toWidth, toHeight), new Rectangle(x, y, ow, oh), GraphicsUnit.Pixel);
try {
bitmap.Save(thumbPath, imageFormat);
}
catch (Exception ex) {
throw ex;
}
finally {
if (g != null) g.Dispose();
if (bitmap != null) bitmap.Dispose();
if (image != null) image.Dispose();
}
}
/// summary>
/// 生成图片水印 /// /summary>
/// param name="originalPath">
源图路径/param>
/// param name="watermarkPath">
水印图片路径/param>
/// param name="targetPath">
保存路径/param>
/// param name="position">
位置/param>
/// param name="opacity">
透明度/param>
/// param name="quality">
质量/param>
public static void GenerateImageWatermark(string originalPath, string watermarkPath, string targetPath, int position, int opacity, int quality) {
Image originalImage = null;
Image watermarkImage = null;
//图片属性 ImageAttributes attributes = null;
//画板 Graphics g = null;
try {
originalImage = Image.FromFile(originalPath);
watermarkImage = new Bitmap(watermarkPath);
if (watermarkImage.Height >
= originalImage.Height || watermarkImage.Width >
= originalImage.Width) {
originalImage.Save(targetPath);
return;
}
if (quality 0 || quality >
100) quality = 80;
//水印透明度 float iii;
if (opacity >
0 &
&
opacity = 10) iii = (float)(opacity / 10.0F);
else iii = 0.5F;
//水印位置 int x = 0;
int y = 0;
switch (position) {
case 1: x = (int)(originalImage.Width * (float).01);
y = (int)(originalImage.Height * (float).01);
break;
case 2: x = (int)((originalImage.Width * (float).50) - (watermarkImage.Width / 2));
y = (int)(originalImage.Height * (float).01);
break;
case 3: x = (int)((originalImage.Width * (float).99) - (watermarkImage.Width));
y = (int)(originalImage.Height * (float).01);
break;
case 4: x = (int)(originalImage.Width * (float).01);
y = (int)((originalImage.Height * (float).50) - (watermarkImage.Height / 2));
break;
case 5: x = (int)((originalImage.Width * (float).50) - (watermarkImage.Width / 2));
y = (int)((originalImage.Height * (float).50) - (watermarkImage.Height / 2));
break;
case 6: x = (int)((originalImage.Width * (float).99) - (watermarkImage.Width));
y = (int)((originalImage.Height * (float).50) - (watermarkImage.Height / 2));
break;
case 7: x = (int)(originalImage.Width * (float).01);
y = (int)((originalImage.Height * (float).99) - watermarkImage.Height);
break;
case 8: x = (int)((originalImage.Width * (float).50) - (watermarkImage.Width / 2));
y = (int)((originalImage.Height * (float).99) - watermarkImage.Height);
break;
case 9: x = (int)((originalImage.Width * (float).99) - (watermarkImage.Width));
y = (int)((originalImage.Height * (float).99) - watermarkImage.Height);
break;
}
//颜色映射表 ColorMap colorMap = new ColorMap();
colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);
colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);
ColorMap[] newColorMap = {
colorMap }
;
//颜色变换矩阵,iii是设置透明度的范围0到1中的单精度类型 float[][] newColorMatrix ={
new float[] {
1.0f, 0.0f, 0.0f, 0.0f, 0.0f}
, new float[] {
0.0f, 1.0f, 0.0f, 0.0f, 0.0f}
, new float[] {
0.0f, 0.0f, 1.0f, 0.0f, 0.0f}
, new float[] {
0.0f, 0.0f, 0.0f, iii, 0.0f}
, new float[] {
0.0f, 0.0f, 0.0f, 0.0f, 1.0f}
}
;
//定义一个 5 x 5 矩阵 ColorMatrix matrix = new ColorMatrix(newColorMatrix);
//图片属性 attributes = new ImageAttributes();
attributes.SetRemapTable(newColorMap, ColorAdjustType.Bitmap);
attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
//画板 g = Graphics.FromImage(originalImage);
//绘制水印 g.DrawImage(watermarkImage, new Rectangle(x, y, watermarkImage.Width, watermarkImage.Height), 0, 0, watermarkImage.Width, watermarkImage.Height, GraphicsUnit.Pixel, attributes);
//保存图片 EncoderParameters encoderParams = new EncoderParameters();
encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, new long[] {
quality }
);
if (GetJPEGCodec() != null) originalImage.Save(targetPath, _jpegcodec, encoderParams);
else originalImage.Save(targetPath);
}
catch (Exception ex) {
throw ex;
}
finally {
if (g != null) g.Dispose();
if (attributes != null) attributes.Dispose();
if (watermarkImage != null) watermarkImage.Dispose();
if (originalImage != null) originalImage.Dispose();
}
}
/// summary>
/// 生成文字水印 /// /summary>
/// param name="originalPath">
源图路径/param>
/// param name="targetPath">
保存路径/param>
/// param name="text">
水印文字/param>
/// param name="textSize">
文字大小/param>
/// param name="textFont">
文字字体/param>
/// param name="position">
位置/param>
/// param name="quality">
质量/param>
public static void GenerateTextWatermark(string originalPath, string targetPath, string text, int textSize, string textFont, int position, int quality) {
Image originalImage = null;
//画板 Graphics g = null;
try {
originalImage = Image.FromFile(originalPath);
//画板 g = Graphics.FromImage(originalImage);
if (quality 0 || quality >
100) quality = 80;
Font font = new Font(textFont, textSize, FontStyle.Regular, GraphicsUnit.Pixel);
SizeF sizePair = g.MeasureString(text, font);
float x = 0;
float y = 0;
switch (position) {
case 1: x = (float)originalImage.Width * (float).01;
y = (float)originalImage.Height * (float).01;
break;
case 2: x = ((float)originalImage.Width * (float).50) - (sizePair.Width / 2);
y = (float)originalImage.Height * (float).01;
break;
case 3: x = ((float)originalImage.Width * (float).99) - sizePair.Width;
y = (float)originalImage.Height * (float).01;
break;
case 4: x = (float)originalImage.Width * (float).01;
y = ((float)originalImage.Height * (float).50) - (sizePair.Height / 2);
break;
case 5: x = ((float)originalImage.Width * (float).50) - (sizePair.Width / 2);
y = ((float)originalImage.Height * (float).50) - (sizePair.Height / 2);
break;
case 6: x = ((float)originalImage.Width * (float).99) - sizePair.Width;
y = ((float)originalImage.Height * (float).50) - (sizePair.Height / 2);
break;
case 7: x = (float)originalImage.Width * (float).01;
y = ((float)originalImage.Height * (float).99) - sizePair.Height;
break;
case 8: x = ((float)originalImage.Width * (float).50) - (sizePair.Width / 2);
y = ((float)originalImage.Height * (float).99) - sizePair.Height;
break;
case 9: x = ((float)originalImage.Width * (float).99) - sizePair.Width;
y = ((float)originalImage.Height * (float).99) - sizePair.Height;
break;
}
g.DrawString(text, font, new SolidBrush(Color.White), x + 1, y + 1);
g.DrawString(text, font, new SolidBrush(Color.Black), x, y);
//保存图片 EncoderParameters encoderParams = new EncoderParameters();
encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, new long[] {
quality }
);
if (GetJPEGCodec() != null) originalImage.Save(targetPath, _jpegcodec, encoderParams);
else originalImage.Save(targetPath);
}
catch (Exception ex) {
throw ex;
}
finally {
if (g != null) g.Dispose();
if (originalImage != null) originalImage.Dispose();
}
}
#endregion }
}
以上就是IO帮助类是什么?IO帮助类的实例介绍(附代码)的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: IO帮助类是什么?IO帮助类的实例介绍(附代码)
本文地址: https://pptw.com/jishu/593256.html
