求图像压缩算法

jinjazz 2012-05-03 10:25:25
加精
原图png,大小20k,其实也是我自己用普通的bmp来save 的




用工具可以处理为256色的gif或者png,比原图小2-3倍,求可以达到这2个效果之一的c#方法




我用EncoderParameter参数转为jpg,质量降低到50%反而更大

以下方法我已经测试过没有达到预期效果,如果有朋友建议用该方法请帮忙给出正确的测试代码
public void Save(string filename, ImageCodecInfo encoder, EncoderParameters encoderParams);
...全文
3883 102 打赏 收藏 转发到动态 举报
写回复
用AI写文章
102 条回复
切换为时间正序
请发表友善的回复…
发表回复
mwp 2012-06-28
  • 打赏
  • 举报
回复
建议你不要保存图片了,只保存里面的文字吧,这个压缩算法压缩比最高
heycoder 2012-06-28
  • 打赏
  • 举报
回复

围观学习,求房价压缩.
snoowood 2012-06-28
  • 打赏
  • 举报
回复
都是神呐
Jellyfish_csdn 2012-05-09
  • 打赏
  • 举报
回复
不错不错
xiying12571 2012-05-08
  • 打赏
  • 举报
回复
这个知识很不错哈
随风飘扬的叶 2012-05-07
  • 打赏
  • 举报
回复
房价太贵伤不起啊!
k_badboy 2012-05-07
  • 打赏
  • 举报
回复
做广告的吧?
熊孩子开学喽 2012-05-07
  • 打赏
  • 举报
回复
这相当于上海中环的房价呀
csrwgs 2012-05-07
  • 打赏
  • 举报
回复
LZ可以考虑GIF的特点
wuzfxx 2012-05-07
  • 打赏
  • 举报
回复
/**
* GZIP压缩
* */
public static byte[] compress(String str) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
GZIPOutputStream gOutputStream = new GZIPOutputStream(out);
gOutputStream.write(str.getBytes("UTF-8"));
gOutputStream.finish();
gOutputStream.close();
out.flush();
out.close();
}
catch (IOException e) {
e.printStackTrace();
}
return out.toByteArray();

}
wk1234123 2012-05-07
  • 打赏
  • 举报
回复
哈哈 如果房价能代码压缩下就好了
hello29 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 的回复:]

看完后,我只有一个感觉,房价太贵了!
[/Quote]
呵呵,很多人都有这个感觉吧
shine333 2012-05-05
  • 打赏
  • 举报
回复
楼上比小的,貌似都拼命压缩颜色数,结果丢颜色了,把白的给丢了。

用ImageMagick吧,哪里都通用的

convert xxx.png -strip -colors N -define png:compression-level=9 yyy.png

有.net接口
vivizzq 2012-05-05
  • 打赏
  • 举报
回复
不知道和H264有没有关系
天涯倦客 2012-05-05
  • 打赏
  • 举报
回复
上面就几个3个颜色, 和一组文字
直接写代码动态生成bmp最小。。。
tiangong789 2012-05-04
  • 打赏
  • 举报
回复
图做的再小也掩盖不了天价的房子
N000b_up_fly 2012-05-04
  • 打赏
  • 举报
回复
学习下其他人怎么做的
jinjazz 2012-05-04
  • 打赏
  • 举报
回复
[Quote=引用 67 楼 的回复:]

TO jinjazz:
图片本身的大小有是极限的,我的那幅图片实际上3位色调色板索引(丢失了白色),如果还想小,则看你的实际应用了。如果图片解码是由自己实现的,则可以在图片有损压缩的基础上,再使用文件压缩技术(比如这种连续色较多的图片,使用最基本的行程压缩或WMF回放效果应该不错),如果是用于浏览器则可以考虑我前面提到的GZIP压缩。
[/Quote]

多谢,这贴让我长进了
zhuiqiugenghao 2012-05-04
  • 打赏
  • 举报
回复
[Quote=引用 45 楼 的回复:]

下面代码产生16色的PNG图像,大小为2.6K。
色彩采样用了最简单的方法,既使用最先碰到的16色。

如果要应对更多的输入(比如更多色彩),则可以采用其他采样算法,比如OctTree算法,比如clustering算法等等。
C# code

void ToPNG4bit()
{
Bitmap source = new Bitmap("1336011498_9094.png")……
[/Quote]


都是高手,向你们学习
lyserver 2012-05-04
  • 打赏
  • 举报
回复
TO jinjazz:
图片本身的大小有是极限的,我的那幅图片实际上3位色调色板索引(丢失了白色),如果还想小,则看你的实际应用了。如果图片解码是由自己实现的,则可以在图片有损压缩的基础上,再使用文件压缩技术(比如这种连续色较多的图片,使用最基本的行程压缩或WMF回放效果应该不错),如果是用于浏览器则可以考虑我前面提到的GZIP压缩。
加载更多回复(47)

110,477

社区成员

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

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

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