您的位置:首页 > 其它

将一张图片处理成多张不用尺寸的图片 自动生成缩略图 类似淘宝主图处理

2014-04-05 11:21 579 查看
将一张图片处理成多张不用尺寸的图片 自动生成缩略图

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Drawing.Imaging;
using System.Drawing;

public partial class ImageHandler : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{

foreach (string f in Request.Files.AllKeys)
{

CreateNewSizePic(sPath, sPath + fileName, fileName, ".jpg");

}
}
catch (Exception ex)
{
Response.Write("error");
}
Response.End();
}

/// <summary>
/// 将一张图片处理成多张不用尺寸的图片
/// path 文件需要保存的路径(E:\新建文件夹2)
/// orifielpath 当前原图文件的路径(E:\新建文件夹\1.jpg)
/// orifilename 原图文件名称(1.jpg)
/// fileType  原图后缀名(.jpg)
/// </summary>
/// <param name="filename"></param>
public static string CreateNewSizePic(string path, string orifielpath, string orifilename, string fileType)
{
Bitmap bm = new Bitmap(orifielpath);
SaveThumbnail(bm, 310, 310, path, orifilename + "_310X310", fileType);
SaveThumbnail(bm, 230, 230, path, orifilename + "_230X230", fileType);
SaveThumbnail(bm, 160, 160, path, orifilename + "_160X160", fileType);
SaveThumbnail(bm, 80, 80, path, orifilename + "_80X80", fileType);
SaveThumbnail(bm, 60, 60, path, orifilename + "_60X60", fileType);
return path;
}

private static void SaveThumbnail(Bitmap originBitmap, int width, int height, string directory, string filename, string extension)
{
var physicalPath = directory + filename + extension;

using (var newImage = new Bitmap(width, height))
{
using (var graphic = GetGraphic(originBitmap, newImage))
{
graphic.DrawImage(originBitmap, 0, 0, width, height);
using (var encoderParameters = new EncoderParameters(1))
{
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 100L);
newImage.Save(physicalPath, ImageCodecInfo.GetImageEncoders().Where(x => x.FilenameExtension.Contains(extension.ToUpperInvariant())).FirstOrDefault(), encoderParameters);
}
}
}
}

private static Graphics GetGraphic(System.Drawing.Image originImage, Bitmap newImage)
{
newImage.SetResolution(originImage.HorizontalResolution, originImage.VerticalResolution);
var graphic = Graphics.FromImage(newImage);
graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
graphic.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
graphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
return graphic;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐