压缩图片问题!

liyings1002 2012-03-15 09:34:31
我在本地上传图片后都可以自动压缩,但是挂到线网上,上传图片后就不自动压缩了,大家能帮我分析下原因吗??这个问题很费解呀!
...全文
84 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
net5354 2012-03-16
  • 打赏
  • 举报
回复
/// <summary>
/// 生成缩略图
/// </summary>
/// <param name="originalImagePath">源图路径(物理路径)</param>
/// <param name="thumbnailPath">缩略图路径(物理路径)</param>
/// <param name="width">缩略图宽度</param>
/// <param name="height">缩略图高度</param>
/// <param name="mode">生成缩略图的方式</param>
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);

//新建一个画板
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(System.Drawing.Color.Transparent);

//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
new System.Drawing.Rectangle(x, y, ow, oh),
System.Drawing.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();
}
}

net5354 2012-03-16
  • 打赏
  • 举报
回复
图片压缩是没有意义的,即使能压缩图片也变质了(至少模糊不清)
Im_Sorry 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gaind 的回复:]

引用 6 楼 hou306010849 的回复:

什么叫压缩图片啊? - -!


实际上就使用户在上传图片的时候,对上传的图片进行等比列压缩(因为用户上传的图片可能过大或者尺寸不符合),然后再服务器文件夹中包含了用户的原图片,压缩之后的图片,那么网站采用了压缩之后的图片,页面加载的速度也会快很多,而且一些小图片也可以应用到一些缩略图等地方
[/Quote]

这样啊,可能是他的压缩代码有问题,跟服务器的没关系!网上一大推,你可以在换一段代码测试!
朕赐你肥皂 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hou306010849 的回复:]

什么叫压缩图片啊? - -!
[/Quote]

实际上就使用户在上传图片的时候,对上传的图片进行等比列压缩(因为用户上传的图片可能过大或者尺寸不符合),然后再服务器文件夹中包含了用户的原图片,压缩之后的图片,那么网站采用了压缩之后的图片,页面加载的速度也会快很多,而且一些小图片也可以应用到一些缩略图等地方
Im_Sorry 2012-03-16
  • 打赏
  • 举报
回复
什么叫压缩图片啊? - -!
朕赐你肥皂 2012-03-16
  • 打赏
  • 举报
回复
上传图片同时进行压缩最好是做成一个webservice

本地压缩成功,但是服务器不成功的话,就排除代码问题,那么你看下服务器文件夹是否有写入权限
liyings1002 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sunzongbao2007 的回复:]

压缩的时机是? 定时去检测临时文件处理 还是 上传完了马上压缩啊
[/Quote]上传完了马上压缩。
铜臂阿铁木 2012-03-15
  • 打赏
  • 举报
回复
压缩的时机是? 定时去检测临时文件处理 还是 上传完了马上压缩啊
tan598121925 2012-03-15
  • 打赏
  • 举报
回复
liyings1002 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sunzongbao2007 的回复:]

压缩的时机是? 定时去检测临时文件处理 还是 上传完了马上压缩啊
[/Quote]是在添加事件里面写在一块的,文件上传也在里面

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧