Skip to main content
 首页 » 编程设计

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

2024年10月25日29txw1958

我尝试将 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 新手)

感谢任何帮助。

请您参考如下方法:

这对于读取和写入来说都很好而且快速:

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