C# 如何修改图片的储存大小,比如10MB改为5MB。

我有一些图片大小为70+MB大小的图片,我要显示在页面上,但是太大img 标签无法显示出来,本来原图是tif格式的图像,现在已经改为JPG,现在就是想在后台修改改变图片的储存大小,尽量不要太降低图片的质量。

你是指你希望“程序化”的自动伸缩图片大小吗?


你这个方案的确可以做,但是实现起来有点绕弯,其实目前各大网站做法是这么实现的:

    准备2~3种同一个图片的不同大小格式(如完整尺寸70M,大尺寸500kb,小尺寸5kb)

    当用户打开网页时,默认页面上显示的都是小尺寸的图片(一般用后缀区分:风景-small.jpg)

    当用户希望查看大图时,实际上在弹出的窗口里显示的是中号图(例如:风景-big.jpg)

    当用户希望下载原图时,则给出原图的URL(例如:风景-realsize.jpg)

当然如果为了一些特殊目的,文件名还可以经过特殊处理。


总之就是:其实你看到的大中小图片,在服务器端存储的是不同的图片文件。。。



--------------------------------- 华丽的分割线 ---------------------------------


话说回来,如果动态调节图片大小本来就是你要实现的程序逻辑,那么实现方法需要你对下列知识有足够的理解:

1. 磁盘IO流

2. 画布和bmp、jpg等图片格式的基本知识(包括图片尺寸大小和图片质量以及文件大小的关系)

3. 通过后台cs文件动态控制html页面元素的知识


如果你这些都会,那么实现方法是这样的:

    获取大图片文件的句柄

    计算显示在网页上的“小图片”的【文件大小】(如你需要的3m)

    算出源图片和将要显示在页面上的这个小图文件大小的比例(例如你说的10m:5m)

    因此获得小图是大图画布尺寸的50%(在不改变格式和质量的前提下)

    按照计算出来的小图片的宽和高,创建一个新的画布(系统类库)

    自己编写取样过程,或者用微软提供的类库将大图的内容【绘入】小图的画布中

    将生成的小图画布保存到磁盘中,放在客户浏览器也能访问的目录,可以起个随机的名字

    利用后台cs代码动态的把页面上所需要显示这张图片的位置的html代码改为小图的文件名和URL路径

    完成


这种方式就是你想要的【在网页显示时候调整图片大小】的实现方式。。。。


除非你老板或者你的作业明确要求实现这种逻辑,劝你还是用分割线上面的,目前比较通用的做法比较好。。。。。

追问

首先谢谢你回答, 我的图片像素是 16143 × 1566 你没错,确实是这么大的,原图是70MB 我现在用PS压缩到了5MB,但是项目要求是上传图片后直接显示在页面上的,所以我不可能要用户去手动用PS压缩图片的,所以我只能依靠代码来修改图片的储存大小,用代码吧图片的体积缩小。

追答

对。所以你要实现”动态生成小图“的代码。而通过HTML代码控制的img标签显示大小只是页面上的”视觉“压缩罢了,实际上后台传输仍然要传大图。

因此你需要1. 上传大图; 2. 后台服务器动态保存一个小图; 3.前台通过jQuery等取得生成的小图URL,并显示出img标签。。。

这样的方式来实现。目前除了自己动手写,似乎有flash的解决方案。你看新浪微博就用的flash上传解决方案。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-27

PS直接存储为WEB所用格式就可以压缩图片大小并且保证质量。还有就是你要按照网页的比例来定义图片的大小,如果网页的比例是800*600,那你图片的宽度正常情况下调整到宽度1000最多了,不要一张高清的图片,调整都不调整就直接放到网页上用,这样肯定是不行的。调整好以后存储WEB格式即可。


追问

我是想在上传图片的后台处理代码中就要修改。

追答

晕,不好意思,误解你的意思了。
没做过这样的功能,我一般都是直接调整好再上传的。:(
我觉得你其实只要做到限制图片的大小就行了,如果上传的时候图片超过一定大小就不允许上传。

追问

谢谢你的提醒,我已经限制了 上传最大不能超过512MB的图片,现在的问题是能让它显示出来。
ps:tif是存储格式图像, 相当的大,大。

追答

这是我以前写的文件上传代码,你可以下载去看看,希望对你有用。




第2个回答  2013-06-27
网上有生成缩略图改变的代码,搜搜就能找打

C# 如何修改图片的储存大小,比如10MB改为5MB。
将生成的小图画布保存到磁盘中,放在客户浏览器也能访问的目录,可以起个随机的名字 利用后台cs代码动态的把页面上所需要显示这张图片的位置的html代码改为小图的文件名和URL路径 完成 这种方式就是你想要的【在网页显示时候调整图片大小】的实现方式。。。除非你老板或者你的作业明确要求实现这种逻辑,劝...

相似回答