在python中快速加载和显示图像(利用python中的Libjpeg Turbo?)

2024-10-01 09:30:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用Tkinter和PIL在python中创建一个图像查看器,但是我希望图像加载更快。因此,我想知道如何安装和使用libjpegturbo与Tkinter和PIL,或者我是否应该使用不同的GUI工具包,比如pyQT或者不同的图像库(我发现了一个叫做OpenCV的东西?)。在

那么,本质上,在python中加载、调整大小和显示大图像的最佳和最快方式是什么?在

编辑: 我认为主要的瓶颈是图像大小调整,它是可见的,但在此之前它是图像加载本身。但我不能确定,因为我不知道如何衡量这样一件事,因为我本质上是一个python新手。在

我所做的基本上是一个极简主义的图像查看器。如果你想看我的代码,它在这里:http://pastebin.com/fwf8b0cU

编辑2:我已经运行了一堆cProfile,修复了一些代码,修复了一些速度慢的问题。所以现在我的问题是,我应该使用另一个GUI工具包,比如pyQT还是其他的图像库(我发现了一个叫做OpenCV的东西?)。在


Tags: 代码图像编辑pil工具包tkinter方式gui
2条回答

如果您想缩小瓶颈的来源,我将从对代码的各个部分调用timeit开始。如果这没有帮助,或者看起来太费劲了,可以看看Python Profilers

您可以看看PyTurboJPEG,它是一个libjpeg-turbo的Python包装器,在解码大型JPEG图像时,它的重新缩放速度非常快(1/2、1/4、1/8)。在

from turbojpeg import TurboJPEG

# specifying library path explicitly
# jpeg = TurboJPEG(r'D:\turbojpeg.dll')
# jpeg = TurboJPEG('/usr/lib64/libturbojpeg.so')
# jpeg = TurboJPEG('/usr/local/lib/libturbojpeg.dylib')

# using default library installation
jpeg = TurboJPEG()

# direct rescaling 1/2 while decoding input.jpg to BGR array
in_file = open('input.jpg', 'rb')
bgr_array_half = jpeg.decode(in_file.read(), scaling_factor=(1, 2))
in_file.close()

相关问题 更多 >