我正在开发一个程序,可以动态创建JPEG图像的缩略图。现在我在想:由于JPEG图像是由8x8像素块(Wikipedia has a great explanation)构建的,是否可以跳过部分解码?
假设我的缩略图至少比原始图像小8倍。然后,我们可以通过仅包括离散余弦变换的常数项,将输入文件中的每个8x8块映射到解码输出中的1个像素。大多数图像数据可以立即丢弃,无需处理。此外,内存使用量减少了64倍。
我不想从头开始实施;这将很快需要一个星期。有没有可以做到这一点的代码?
如果没有,这是因为这种方法不值得,或者仅仅是因为没人想到它?
答案 0 :(得分:4)
我认为djpeg's scale功能可以做到这一点。
它可以将8x8块缩放到1到16像素之间的任何大小。
“这很有趣,因为可以直接从JPEG(DCT)数据中检索不同的空间大小输出,而无需单独的完整解码和空间重采样。”
答案 1 :(得分:2)
根据this answer,来自启蒙运动的EPEG就是通过收集DCT系数来将图像缩小8倍。这是current home of EPEG。
答案 2 :(得分:0)
我正在处理的项目目前正在使用ImageGen,可以动态调整各种图像大小 - 如果功能列表符合您的要求,这可能会收回成本。否则我想你想要在图像上实现有损文件压缩,必须之前已经完成了!