网络编辑在asp.net中如何自动调整上传图片的像率大小(宽高)
网络编辑在asp.net中如何自动调整上传图片的像率大小(宽高)上传照片不能自动调整大小
自动调整上传图片大小 可以有两种方法:
1是上传时候同时生成图片缩略图;
2是在显示图片时候,等比例压缩 图片大小 这个用js可以实现;
生成缩略图代码(C#):
///
/// 生成缩略图
///
///
源图路径(物理路径)
///
缩略图路径(物理路径)
///
缩略图宽度
///
缩略图高度
///
生成缩略图的方式
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
{
System。
Drawing。Image originalImage = System。Drawing。Image。FromFile(originalImagePath);
int towidth = width;
int toheight = height;
int x = 0;
int y = 0;
int ow = originalImage。
Width;
int oh = originalImage。Height;
switch (mode)
{
case "HW"://指定高宽缩放(可能变形)
break;
case "W"://指定宽,高按比例
toheight = originalImage。
Height * width / originalImage。Width;
break;
case "H"://指定高,宽按比例
towidth = originalImage。
Width * height / originalImage。Height;
break;
case "Cut"://指定高宽裁减(不变形)
if ((double)originalImage。
Width / (double)originalImage。Height > (double)towidth / (double)toheight)
{
oh = originalImage。Height;
ow = originalImage。
Height * towidth / toheight;
y = 0;
x = (originalImage。Width - ow) / 2;
}
else
{
ow = originalImage。
Width;
oh = originalImage。Width * height / towidth;
x = 0;
y = (originalImage。Height - oh) / 2;
}
break;
default:
break;
}
//新建一个bmp图片
System。
Drawing。Image bitmap = new System。Drawing。Bitmap(towidth, toheight);
//新建一个画板
Graphics g = System。Drawing。
Graphics。FromImage(bitmap);
//设置高质量插值法
g。InterpolationMode = System。Drawing。Drawing2D。InterpolationMode。
High;
//设置高质量,低速度呈现平滑程度
g。SmoothingMode = System。Drawing。Drawing2D。SmoothingMode。HighQuality;
//清空画布并以透明背景色填充
g。
Clear(Color。Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g。DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
new Rectangle(x, y, ow, oh),
GraphicsUnit。
Pixel);
try
{
//以jpg格式保存缩略图
bitmap。Save(thumbnailPath, System。Drawing。Imaging。
ImageFormat。Jpeg);
}
catch (System。Exception e)
{
throw e;
}
finally
{
originalImage。
Dispose();
bitmap。Dispose();
g。Dispose();
}
}
等比例压缩的js代码如下:
function DrawImage(ImgD,iwidth,iheight){
//参数(图片,允许的宽度,允许的高度)
var image=new Image();
image。
src=ImgD。src;
if(image。width>0 && image。height>0){
if(image。width/image。height>= iwidth/iheight){
if(image。
width>iwidth){
ImgD。width=iwidth;
ImgD。height=(image。height*iwidth)/image。width;
}else{
ImgD。
width=image。width;
ImgD。height=image。height;
}
}else{
if(image。height>iheight){
ImgD。
height=iheight;
ImgD。width=(image。width*iheight)/image。height;
}else{
ImgD。width=image。
width;
ImgD。height=image。height;
}
}
}
}
用法:。