Roy*_*ang 2 png jpeg imagemagick gif
我正在使用Magick ++(IM 7.0.3平台:CentOS Linux 7.0版)将图像转换为gif.我从文件创建Image对象,问题是当我将9个png文件(每个50kb)转换为gif时,它只需要50ms.但当它转向9个jpg文件(每个20kb)时,它需要1900ms.背后的原因是什么?如何使用jpg文件加快速度?
for(int i = 2; i < argc-1; i++)
{
// I pass the file path from command line
cout << argv[i] << endl;
Image img(argv[i]);
img.animationDelay(delay);
img.magick("GIF");
frames.push_back(img);
}
long mergestart = getCurrentTime();
Magick::Blob tmpBlob;
Magick::writeImages(frames.begin(), frames.end(), &tmpBlob);
Run Code Online (Sandbox Code Playgroud)
我猜想PNG文件要么是palettised或包含相对较少的颜色,而JPEG将有数千种颜色,因此ImageMagick将被迫做更多的工作来减少和优化相对较小的256色调色板的颜色一个GIF可以包含.
运行以下命令检查我的文件理论:
identify -verbose Any.PNG
Run Code Online (Sandbox Code Playgroud)
和
identify -verbose Any.JPG
Run Code Online (Sandbox Code Playgroud)
并看看Number of colours.
或者,您可以使用此命令计算颜色:
identify -format %k AnyImage.png
Run Code Online (Sandbox Code Playgroud)
如果你想让它更快,因为你需要处理数千个文件,你可以使用多线程,或者像GNU Parallel这样的东西来一次完成更多工作.
| 归档时间: |
|
| 查看次数: |
882 次 |
| 最近记录: |