ImageMagick创建了一些相当大的PNG.GraphicsMagick要好得多,但我仍然在寻找与convert一起使用的最佳选项,以获得最小的文件大小png.
我这里有一个带有小文件大小的大png,并通过IM转换传递我无法达到该文件大小,更不用说让它变小了.通过GM转换我可以稍微小一些,但我正在寻找改进,一般来说我遇到的任何图像.
gm convert -quality 95 a_png.png gm.png
convert -quality 95 -depth 8 a_png.png im.png
gm identify *
a_png.png PNG 2560x2048+0+0 PseudoClass 256c 8-bit 60.1K 0.000u 0:01
gm.png[1] PNG 2560x2048+0+0 PseudoClass 256c 8-bit 60.0K 0.000u 0:01
im.png[2] PNG 2560x2048+0+0 DirectClass 8-bit 130.2K 0.000u 0:01
Run Code Online (Sandbox Code Playgroud)
什么转换选项产生最小的PNG文件大小?
(是的,我熟悉OptiPNG,PNGOUT和Pngcrush.但是我正在寻找一些可以在我正好碰上的每个*nix盒子上使用的东西.)
我用Page Speed测试我的网站,结果大约是70/100.启用压缩是减慢速度的第一个也是最重要的因素.
我知道我可以通过修改php.ini来自动执行此操作,但我对手动方法(gzencode)更感兴趣.
问题是所有浏览器都无法打开网站(Firefox:"您尝试查看的页面无法显示,因为它使用的是无效或不受支持的压缩形式.",Chrome:"303,ERR内容编码"等. )或者它们显示编码的字符串.
Live Headers显示浏览器接受编码,并且响应已设置内容类型,但仍然失败.
GET / HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Length: 5827
Vary: Accept-Encoding
Run Code Online (Sandbox Code Playgroud)
private function _compress($data) {
//return trim(preg_replace(array('/\>[^\S ]+/s','/[^\S ]+\</s','/(\s)+/s'), array('>','<','\\1'), $data));
$supportsGzip = strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false;
ob_start();
if ($supportsGzip) {
echo gzencode(trim(preg_replace('/\s+/', ' ', $data)), 9);
} else {
echo $data;
}
$content = ob_get_contents();
header("content-type: text/html; charset: UTF-8");
header("cache-control: must-revalidate");
$offset = 60 * 60;
$expire = "expires: " . gmdate("D, d M Y …Run Code Online (Sandbox Code Playgroud) 目前我有一个使用GZIP环境变量设置压缩的脚本。
使用 gzip 1.8 我收到警告:
warning: GZIP environment variable is deprecated; use an alias or script
Run Code Online (Sandbox Code Playgroud)
应该如何调用 tar 以便设置压缩级别?
当前命令:
GZIP=-9 tar -zcf ...要压缩的文件...
我正在寻找可用于解压缩RAR文件的算法的描述.我不需要创建新的存档,只需解压缩现有存档.
Wotsit.org具有RAR 文件格式(版本2)的描述,但描述没有描述解压缩算法.
此外,是否有人知道RAR版本3是否对文件格式本身引入了任何重大更改?
或者,也许,我没有得到的是一元编码:
在Golomb或Rice编码中,N通过将数字除以另一个数字将数字拆分为两部分M,然后将该除法的整数结果编码为一元,其余为二进制.
在Wikipedia 示例中,它们使用42 as N和10 as M,因此我们最终q得到4(在一元中:1110)和r2 的余数(在二进制010中)的商,因此得到的消息是1110,010或8位(可以跳过逗号).42的简单二进制表示是101010或6位.
对我来说,这似乎是由于一元表示q总是必须比二进制更多位.
显然,我在这里错过了一些重要的观点.它是什么?
我想.js在命令行中使用Google Closure Compiler 将所有文件压缩到一个文件中的同一目录中.
对于一个文件,它是:
java -jar compiler.jar --js test.js --js_output_file final.js
Run Code Online (Sandbox Code Playgroud)
但我没有在文档中找到如何在final.js没有写入最后一个压缩文件的情况下将我的其他文件放在最后?
我想要这样的东西:
java -jar compiler.jar --js --option *.js --js_output_file final.js
Run Code Online (Sandbox Code Playgroud)
我可以或者必须执行一个程序,它将所有文件添加到文件中并在压缩之后?谢谢你能帮助我!
我想尝试使用java.util.zip中的Deflate和Inflate类进行zlib压缩.
我能够使用Deflate压缩代码,但在解压缩时,我遇到了这个错误 -
Exception in thread "main" java.util.zip.DataFormatException: unknown compression method
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Inflater.java:238)
at java.util.zip.Inflater.inflate(Inflater.java:256)
at zlibCompression.main(zlibCompression.java:53)
Run Code Online (Sandbox Code Playgroud)
这是我目前的代码 -
import java.util.zip.*;
import java.io.*;
public class zlibCompression {
/**
* @param args
*/
public static void main(String[] args) throws IOException, DataFormatException {
// TODO Auto-generated method stub
String fname = "book1";
FileReader infile = new FileReader(fname);
BufferedReader in = new BufferedReader(infile);
FileOutputStream out = new FileOutputStream("book1out.dfl");
//BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename));
Deflater compress = new Deflater();
Inflater …Run Code Online (Sandbox Code Playgroud) 对于Lempel-Ziv-Welch和Huffman压缩算法,Big O表示法的空间和时间复杂性有哪些?谷歌让我失望.
谢谢,
弗朗西斯科
compression algorithm big-o time-complexity space-complexity