这是我第一次使用PHP Imagick并遇到问题。
我正在创建一个网站模块,用户可以在其中上传需要转换为加密文件类型的图像,其中包含上传的图像作为 DDS 纹理。
所以我需要做的是将上传的图像转换为dds文件格式。
法典:
$img = new Imagick('test.png'); //Load the uploaded image
$img->setformat('dds'); //Set the format to dds
$img->setImageCompression(Imagick::COMPRESSION_DXT3); //Set compression method
$img->writeimage('test.dds'); //Write/save the dds texture
问题:输出文件始终是一个空的 0 字节文件。
需要转换的 PNG:测试.png
DDS 这需要是输出:测试.dds
也许我需要其他版本的Imagick或ImageMagick?
我的旧版本是:
- 菲律宾比索 5.5.15
- Imagick 3.1.2-5.5-ts-vc11-x86
- 图像魔术 6.8.4-0-Q16-x86
我目前正在Windows 8.1 x64上进行测试。
任何建议/帮助将不胜感激。
编辑:编辑了这个问题,希望现在清楚我想要实现的目标。
已解决:问题是不支持DDS写入的ImageMagick版本。
安装了 ImageMagick 6.8.6-10-Q16-x86,因为该版本中添加了 DDS 写入支持(较新的版本导致无法加载 imagick)。
我使用和工作的当前版本:
- 菲律宾比索 5.5.15
- Imagick 3.1.2-5.5-ts-vc11-x86
- 图像魔术 6.8.6-10-Q16-x86
从上面的调试来看,问题是您的 ImageMagick 版本不支持写入 DXT3 压缩的 DDS 文件。
解决此问题的选项是:
-
使用不同的压缩格式 - DXT5 可能没问题,但它与 DXT3 不完全相同。
-
升级到支持以 DXT3 格式编写的较新版本的 ImageMagick 和 Imagick。