我有一个分辨率为18984x28591px的图像,但是无法使用Paint或Pixlr Editor来打开它以减小其尺寸。
如何在笔记本电脑上转换或打开大图像?
我有一个分辨率为18984x28591px的图像,但是无法使用Paint或Pixlr Editor来打开它以减小其尺寸。
如何在笔记本电脑上转换或打开大图像?
Answers:
我在Ubuntu上使用ImageMagick调整了这些大图片的大小。
convert -resize 10% source.jpg dest.jpg
它花了一段时间,但是使用1 GB的RAM,该工具为其自身创建了一个4.7 GB的类似交换文件。
有关更多信息,请参见AskUbuntu。
convert -resize 1898x2859 ...
从理论上讲,大多数图像格式可以逐步缩小,而无需将整个图像加载到内存中,但是除了JPEG之外,我不知道任何真正实现此功能的工具:它的特殊之处在于,您不仅可以在不加载完整分辨率的情况下进行缩小,而且由于没有创造性地使用DCT(JPEG是在频域中编码的,因此不必将其解码为与原始图像完全相同的分辨率),还可以在不解码完整分辨率的情况下进行缩小。
在默认的JPEG解码工具(命令行中的libjpeg-progs包在Linux中,寻找djpeg.exe适用于Windows)将缩减庞大的JPEG“常规”应用程序之前,甚至可以完成加载它:
djpeg -scale 1/8 huge_image_that_will_not_fit_in_your_ram.jpg >downscaled.ppm
我也已经在某些GUI应用程序中看到了“边下载边缩小”选项,但是目前无法调用它。
比较ImageMagick与djpeg的内存使用情况和处理时间对大图像的缩减比例(将图像缩放到cjpeg,因此生成的图像也是jpg,以便与convert进行公平比较)
$ display -verbose input.jpg
input.jpg JPEG 13114x11722 13114x11722+0+0 8-bit sRGB 30.75MB 6.690u 0:06.699
$ /usr/bin/time -f "time=%E mem=%MK" bash -c "convert input.jpg -scale '12.5%' output.jpg"
time=0:10.72 mem=1225844K
$ /usr/bin/time -f "time=%E mem=%MK" bash -c "djpeg -scale 1/8 input.jpg | cjpeg > output2.jpg"
time=0:00.88 mem=1412K
1,2GB和1,4MB相比,速度要慢10倍以上-这是在一个相对较小的13k x 11k映像上,该映像可以完全放入RAM,因此不会发生交换。
另一方面,使用djpeg进行降级也有其自身的局限性:缩放因子的选择受到限制,并且重采样方法无法更改。
您也可以尝试在Windows上使用Picture Resizer(我喜欢这个工具)
您只需将图片拖放到这个简单的EXE上,如果您有许多图片要转换,因为您一次可以执行许多操作,则该功能特别有用。
所有的配置都是通过EXE的命名完成的,这是出色的IMO
我从来没有尝试过使用大文件。