c#wpf根据图片文件地址获取图片之后,如何把获取到的图片质量压缩到几十kb大小?

csth555 2016-08-20 09:28:50
主要是想解决listbox显示多个图片的内存占用问题。如果获取的图片质量大小都在1mb以上的话,即使是十几个图片内存消耗看起来也是很大的,那么如何将获取的图片质量压缩成几十块kb大小?若能提供简便的方法,支持jpg,bmp,png,jpeg等格式的图像压缩,并且最后将压缩的图片赋值给ImageSource类型的变量最好
...全文
356 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
john_QQ:2335298917 2016-08-21
  • 打赏
  • 举报
回复
你改的只是图像的显示的宽和高,应该把图像的文件的分辨率改一下,就像版主说的
  • 打赏
  • 举报
回复
图片质量跟图片文件大小其实没有对应关系。你想错了。 不过既然你这样认识“图片质量”,那也就无所谓质量了。
  • 打赏
  • 举报
回复
引用 6 楼 csth555 的回复:
[quote=引用 3 楼 sp1234 的回复:] “图片质量大小都在1mb以上” 是什么意思?你所谓的图片质量如何表示?
图片质量大小以图片文件大小表示[/quote] “图片质量以图片文件大小表示”,原来你是这个意思。 那么你可以改为不超过 100x100的缩略图,使用 .net 的 GetThumbnailImage 函数,然后保存为 jpeg 格式图片。
xuzuning 2016-08-21
  • 打赏
  • 举报
回复
var src = new Bitmap("大图"); var des = new Bitmap(src, src.Width / 10, src.Height / 10); //缩放比例自己确定 des.Save("小图");
csth555 2016-08-21
  • 打赏
  • 举报
回复
引用 5 楼 csth555 的回复:
[quote=引用 4 楼 johnliuyuan 的回复:] jpg的压缩已经很好了,几乎无法进一步压缩了,如果你想进一步压缩,就得降低图像的质量。如果是bmp的,压缩成jpg应该体积减少不少。或者,你把图片弄成小的缩略图
怎么弄成缩略图?似乎改宽高的值,几十个图片的内存占用就是500mb左右[/quote] 仅仅改图片的分辨率的话(在数据模板中的固定image的两个属性width和height的值),几十个图片在listbox显示,把任务管理器打开一看内存占用还是非常惊人的500mb。仅仅改分辨率似乎不行,改的再小也一样。
csth555 2016-08-21
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
“图片质量大小都在1mb以上” 是什么意思?你所谓的图片质量如何表示?
图片质量大小以图片文件大小表示,之所以这样表示,是因为我之前读取过1000个系统默认文件图标,然后在listbox上显示,内存占用也就是60mb。读取几十个文件大小超过1mb的图片文件,把image的width和height改一下,然后在listbox显示,其内存占用是500mb左右,所以我认为显示图片的质量就是图片的文件大小和图片的分辨率。我是菜鸟只能这样认定了 通过Photoshop把几十个1mb大小或超过1mb大小的图片文件,修改分辨率改成30kb左右的大小,然后在用程序读取,之后在listbox显示,程序占用非常小。由此认定,显示图片所占用的内存和图片的文件大小以及显示的图片分辨率有关。如果在获取图片之后将图片分辨率修改,然后将质量压缩成几十kb大小,再在listbox显示,内存占用也不会达到惊人的500mb,
csth555 2016-08-21
  • 打赏
  • 举报
回复
引用 4 楼 johnliuyuan 的回复:
jpg的压缩已经很好了,几乎无法进一步压缩了,如果你想进一步压缩,就得降低图像的质量。如果是bmp的,压缩成jpg应该体积减少不少。或者,你把图片弄成小的缩略图
怎么弄成缩略图?似乎改宽高的值,几十个图片的内存占用就是500mb左右
john_QQ:2335298917 2016-08-20
  • 打赏
  • 举报
回复
jpg的压缩已经很好了,几乎无法进一步压缩了,如果你想进一步压缩,就得降低图像的质量。如果是bmp的,压缩成jpg应该体积减少不少。或者,你把图片弄成小的缩略图
  • 打赏
  • 举报
回复
“图片质量大小都在1mb以上” 是什么意思?你所谓的图片质量如何表示?
csth555 2016-08-20
  • 打赏
  • 举报
回复
人都去哪了?
csth555 2016-08-20
  • 打赏
  • 举报
回复
这么久都没人?

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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