當我這樣做時convert 1.png 1.jpg- 我從 png 中刪除了透明并在 jpg 中看到了真實的背景,但是當我在 php Imagick 中做同樣的事情時: $piece = new Imagick("1.png"); $piece->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN); $piece->setImageFormat('jpg'); // How to refresh content of $piece w/o save to disk? $piece->writeImage('image.jpg'); // it works as I need - when reopen saved image我得到的只是白色背景,在第一張圖片上是透明的(但在第一張圖片上是透明的)。如何使用 Imagick 獲得相同的結果?
1 回答

揚帆大魚
TA貢獻1799條經驗 獲得超9個贊
您正在執行兩種不同類型的處理。
JPG 不支持透明度。所以你的轉換命令只是讀取 PNG 輸入并保存到 JPG 輸出。具有透明度的 Alpha 通道被簡單地移除,顯示任何圖像或顏色數據位于 Alpha 通道的透明部分下方。
在您的 Imagick 代碼中,您將 Alpha 通道與默認的白色背景進行了展平。這會在 alpha 通道透明的地方放置白色,然后保存為 JPG。
如果您想要在您的轉換命令中使用相同的白色,那么請執行convert image.png -flatten image.jpg
. 如果您希望您的 Imagick 執行與轉換相同的操作,請移除展平。讀取 input.png 圖像并簡單地保存為 JPG。
- 1 回答
- 0 關注
- 104 瀏覽
添加回答
舉報
0/150
提交
取消