如何降低图片色位?

a8352081 2009-10-02 06:43:06
图片太大,不方便传输,想靠降低色位减小它的体积,结果郁闷的发现居然搜不到几篇有用的资料...

然后我又搜图片的解压缩算法,又没搜到...

我记得在哪有看见什么16色、256色、60000色什么的,改变之后速度有明显增加,请问那是怎么做的?
...全文
598 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
a8352081 2009-10-09
  • 打赏
  • 举报
回复
楼上的思路太可怕了,完全没实现思路,我只能忽略掉。另外,说的好像也是压缩,我说了不能压缩....

图像有损无所谓,大家如果玩过黑洞就知道,里面有个色位的选择,色位越低传输越快,当然,图像也越差,不过我要的就是那效果!!!

还有就是,14楼的思路,网上搜不到实例,我晕倒
csrwgs 2009-10-05
  • 打赏
  • 举报
回复
抛砖引玉吧
一般的BMP图片的每个pixel都是3个字节,代表RBG三个颜色
比如说这三个字节是[0x55,0x55,0x55],二进制表示为:B01010101 01010101 01010101
如果去掉每个字节的最低三位,三个字节变成[0x50,0x50,0x50],其实肉眼是看不出变化的,
将最后三位直接去掉,其压缩为B01010 01010 01010,也就是0x52 0x94压缩为2个字节。
就是这样
a8352081 2009-10-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 dylike 的回复:]
BitmapData可以在转到内存时修改色深,如24位,16位.
[/Quote]

前辈,能不能再给出具体点的代码?
dylike 2009-10-05
  • 打赏
  • 举报
回复
BitmapData可以在转到内存时修改色深,如24位,16位.
bxbacn 2009-10-05
  • 打赏
  • 举报
回复
楼主去搜缩略图生成吧,那东西就能搞质量等选项,大小不变的情况下,就是变相的降低图片质量的目的了


不过说一句,那也是要把图片转到服务器,c#才能工作啊。。除非你的程序在本机
a8352081 2009-10-05
  • 打赏
  • 举报
回复
顶起顶起顶起顶起
a8352081 2009-10-04
  • 打赏
  • 举报
回复
哦,发现新问题,不能打包压缩图片...只能想办法让它缩小体积,有损无所谓,只要能变小就好,就比如,把图片变成没什么颜色的,全灰...
frankla 2009-10-04
  • 打赏
  • 举报
回复
Bitmap bmPhoto = new Bitmap(destX, destY,
PixelFormat.Format24bppRgb);
bmPhoto.SetResolution(imgPhoto.HorizontalResolution,
imgPhoto.VerticalResolution);

Graphics grPhoto = Graphics.FromImage(bmPhoto);
grPhoto.Clear(Color.White);
grPhoto.InterpolationMode =
InterpolationMode.HighQualityBicubic;

grPhoto.DrawImage(imgPhoto,
new Rectangle(0, 0, destX, destY),
new Rectangle(0, 0, sourceWidth, sourceHeight),
GraphicsUnit.Pixel);
lijing3333 2009-10-03
  • 打赏
  • 举报
回复
用PS打开图片--另存图片-- 保存的时候会提示你图片质量.一般改为中等就可以了。
还有如果图片..面积太大..在编辑里面收缩图片的面积. 保存的时候图片会小很多.

看来程序员基本的PS还是要会点啊。 晕死!!!
lijing3333 2009-10-03
  • 打赏
  • 举报
回复
楼主是要在C#里面自动转换啊? 这个就比较麻烦了吧。

貌视除了跟图片的格式 有关系外...图片的像素大小也很有关系呢....
比如一张2000X2000的 就算改成jpg 图片文件还是很大的...
为什么不用PS手动转呢? 貌视有批量生成的吧...
dacan66 2009-10-03
  • 打赏
  • 举报
回复
额,我好像以前做过,我的方法是通过减少图片的分辨率来减少图片体积。

比如:
//读取一些常用的格式,如jpg,bmp等
Bitmap myBitmap = new Bitmap("c:\\t.bmp");

//生成80*100的缩略图
Image myThumbnail = myBitmap.GetThumbnailImage(80, 100, null, IntPtr.Zero);


然后把生成的这个图片存成文件,覆盖掉前面的图片。
wenbin 2009-10-03
  • 打赏
  • 举报
回复
JEPG,这些格式本身就是压缩算法
你转格式的时候,他们已经使用了压缩算法,
只是有些是有损,有些是无损的
若是对图片质量要求不高,可以使用有损压缩算法
例如JEPG就是有损的
不知这样LZ满意否?

若是真想降低色位:
那就了解下位图的存储格式,就可以了。
Jeff20040819 2009-10-03
  • 打赏
  • 举报
回复
up
懦芞 2009-10-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 a8352081 的回复:]
求求二楼的了,我是要用C#来改....

另外再求一楼的,我就是想要降低色位或者来个压缩算法什么的

拜托各位了
[/Quote]
压缩算法,这个可行吗?
zisefengye 2009-10-03
  • 打赏
  • 举报
回复
我觉得最方便的方法是,把图片另存为jpge格式,图片就会被压缩小了。我拍的照片有3M左右的,另存后只剩900k左右了。
a8352081 2009-10-03
  • 打赏
  • 举报
回复
求求二楼的了,我是要用C#来改....

另外再求一楼的,我就是想要降低色位或者来个压缩算法什么的

拜托各位了
wenbin 2009-10-02
  • 打赏
  • 举报
回复
...不是吧,降低了,就还原不了了哦
还是使用不同的格式进行压缩要好些吧
PNG格式不错

110,534

社区成员

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

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

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