
C# 如何修改图片的储存大小,比如10MB改为5MB。 100
你是指你希望“程序化”的自动伸缩图片大小吗?
你这个方案的确可以做,但是实现起来有点绕弯,其实目前各大网站做法是这么实现的:
准备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上传解决方案。

2024-10-28 广告