png格式的图片怎么样压缩,要求压缩后格式不变,图片质量损失小,要用到...

发布网友 发布时间:2022-04-24 08:59

我来回答

3个回答

热心网友 时间:2022-05-21 01:22

png压缩大小可以用这个在线图片压缩工具,想把png图片文件的大小减到多少都行,比如你直接设置一下压缩数值到500Kb,马上瞬间就能把图片的文件大小压缩到500Kb搞定,你设定压缩到多少kb,他压缩完输出的图片就是多少kb,非常快捷。在线智能压缩图片大小,图片压缩体积

在线图片智能压缩使用步骤:

一、首先点击加号添加需要压缩的图片。目前已知支持对jpg、png等多种常见的图片格式进行压缩,如果上传图片并压缩成功,则代表支持该图片格式。
二、可以自行修改图片需要被压缩到的最大宽高尺寸,默认为图片原始的宽高尺寸,且宽高比例是自动锁定的。
三、必须设置图片被压缩后,期望输出的图片文件的最大占用空间。(必填项)
四、选择图片生成的算法。默认为混合优先算法,绝大多数情况下使用默认算法即可。
五、压缩的设定值不能小于1Kb,但图片压缩的最终效果可以小于1Kb。

butterpig

热心网友 时间:2022-05-21 02:40

准备:
软件系统里会自带有的.如果没有可以在网上下载到好压软件安装也可以.
方法:
选中图片---右击----添加到压缩文件---确定即可!

热心网友 时间:2022-05-21 04:15

png图片的压缩与解压缩
在J2ME平台上PNG图片格式几乎成为了标准,无数台手持设备上运行的J2ME程序几乎都选用PNG来显示图像,包括大量的手机游戏以及手机应用,所以对PNG文件格式的了解,可以更有效的减少Jar Size,保护自有知识产权。

用来描述图像的基本信息,其格式为:
图像宽: 4byte
图像高: 4byte
图像色深: 4byte
颜色类型: 1byte
压缩方法: 1byte
滤波方法: 1byte
扫描方法: 1byte
曾经有人问过我,撒叫滤波方法和扫描方法,汗,说实话我也不知道,不过我们是在做手机游戏,不是在搞图形学不是嘛。
PLTE块:
这个就是传说中放置调色盘数据的地方啦,其格式为:
循环
RED: 1byte
GREEN:1byte
BLUE: 1byte
END
循环长度嘛,不就是Chunk Length / 3的长度嘛,而且Chunk Length一定为3的倍数。
tRNS块:
这个块时有时无,主要是看你是否使用了透明色。该区块的格式为:
循环
if(对应调色盘颜色非透明)
0xFF: 1byte
else
0x00: 1byte
END
循环长度为调色盘的颜色数,相当于调色盘颜色表的一个对应表,标识该颜色是否透明,0xFF不透明,0x00透明。故如果用UltraEdit查看PNG文件的二进制编码,如果看到一大片FF,一般就是tRNS区块啦,因为一个PNG文件一般只有一个透明色。

IDAT块:
这个就是存放图像数据的地方啦,这里要注意的是一个PNG文件可能有多个IDAT区块,而其他三大区块只可能有一个。
IDAT 区块是经过压缩的,所以数据不可读,压缩算法一般为LZ77滑动窗口算法,如果硬要看里面的数据的话,用zlib库也是可以的,CoCoMo当年就见过 Windows Mobile上的帝国时代巨*的用zlib库压缩和解压该区块来进一步减少PNG文件大小,真是寸K寸金啊。
PLTE块:最多128个颜色,为撒要用4byte来记录区块长度而不是用1byte来记录颜色数呢?
tRNS块:既然有颜色数,tRNS又是调色盘颜色表的对应表,既数量与颜色数相同,为撒还需要呢?
IDAT块:我想这个是唯一需要4byte来记录长度的区块。
Level5:每个区块的Chunk CRC是否需要呢?
因为计算CRC需要一些时间,但对于字节较少的区块一般可以忽略不计,所以对于这个问题还是由程序员自己决定吧。对于CRC的计算可以参看CoCoMo的另一篇Blog“PNG文件的CRC码计算”
Level6:每个区块我们是否要原封不动的保存期数据呢?
IHDR块:除了宽、高、色深是需要的,后面那4byte的信息是固定的0x03000000
PLTE块:为撒要用3byte来表示RGB而不是2byte的565格式?压缩方法可以参看CoCoMo的另一篇Blog“关于PNG图像压缩的一点感悟”
tRNS块:我想tRNS块是冗余最多的区块了吧,大段大段的0xFF明显没有必要,一般的PNG文件只有一个透明色,为撒要用对应表的方法而不是一个索引来记录到底哪个是透明色呢?由于颜色数最多128,所以只需1byte就可以代替tRNS那么多0xFF啦。
IDAT块:么想法,如果你够*,把zlib加进来吧!

PNG图像解压:
创建了自定义的文件,J2ME端读取后,就面临解压的问题了。我们可以利用此函数来创建Image:
static Image
createImage(byte[] imageData, int imageOffset, int imageLength)
前提是传入的imageData与PNG未被压缩前的一致。因为PNG文件格式是固定的,所以读取自定义的压缩文件后,开始将那些默认的数据再添加进去,实现解压的目的。下面就开始解压之旅吧!

PNG图像加解密:
现在了解了之前的压缩和解压技术,这个问题也就迎刃而解了,因为Chunk Length,Chunk Type和Chunk CRC这些东西都消失了,甚至连数据块本身的数据都修改了,我可以按照ImageWidth、ImageHeight、ImageDepth的顺序写数据,也可以倒过来写。我想再牛的PNG分析器也是*为力的吧,唯一可以定位的就只有IDAT区块了,不过就算得到该区块的数据,也应该是一张黑白图。追问额,我晕了,您能说说具体怎么操作吗?png格式压缩成png,我听说可以用pngout,可是这个怎么用呢

追答大哥啊。批量压缩是个很简单的问题啊。这样跟你说吧:我给你这个在线图片转换格式的网站http://pic.55.la/ 还有你去下个 快压 或 好压 。要最新版的,轻松给你压。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com