如何使用Python Wand / ImageMagick将PSD转换为PNG?

时间:2015-02-24 00:08:11

标签: python imagemagick png psd wand

我尝试将PSD转换为PNG,但是当我保存PNG时,Wand(wand-0.4.0-py2.7)将PSD内的所有层作为单独的PNG文件吐出(保存的最后一个文件是我想要的那个) )。那么如何正确地从PSD转换为PNG?

# Convert a large PSD to small PNG thumbnail
myImage = Image(filename="test.psd")
myImage.resize(100, 100)
myImage.format = "png"
myImage.save(filename="test.png")

找到相关解决方案:

但不确定如何在Python中完成它(我是Python的新手)

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这对于读取和写入都很有效并且快速

# 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 )