这对于读取和写入都可以很好且快速地工作:
# Convert a large PSD to small PNG thumbnail
myImage = Image(filename="test.psd[0]")
myImage.format = "png"
myImage.sample(100, 100)
myImage.save(filename="test.png")
因为 Wand 只读取 1 层而不是 PSD 内的所有层。
- 关键是将[0]附加到文件名字符串。
- 经过测试,[0]会从 PSD 中得到最终的合成图像。
- 而所有其他数字似乎并不能清楚地说明它们代表哪些层。在我的例子中,[1] 是从底部算起的第 2 层,而 [2] 是第 3 层,依此类推,所以不要以这种方式提取层可能是个好主意。
对于 PSD 文件进行更复杂的操作,您可以考虑使用 Python psd-tools ( https://pypi.python.org/pypi/psd-tools )。但从我最初的测试来看,它读取 PSD 的速度相当慢(可能是因为它读取了整个 PSD)。
Qt 的附加应用程序
如果您想将 PSD(或其他图像格式)加载到 Qt UI 中,它会很有用。这个概念是将 Wand 加载的图像转换为图像字符串,并将该图像字符串发送给 QImage。
# load the image first
myImage = Image(filename=r"c:\test.psd[0]")
myImage.format = "png"
myImage.sample(100, 100)
aBlob = myImage.make_blob()
# load the image data into QImage
myQImage = QtGui.QImage.fromData( aBlob )
myQPixmap = QtGui.QPixmap.fromImage( myQImage )
target_QLabel.setPixmap( myQPixmap )