目前遇到的問題如下。
同樣尺寸的PNG圖。
一份是用AI生成出來的,有做了300解析度的輸出。圖片大小為 2961*2045
這份其實就是我的樣板圖
第二份是在網頁中用了 canvas 去載入上面的PNG後,再網頁上操作合併圖片完後。
再生成PNG圖。也是 2961*2045
我PHP是用如下的語法來生成JPG圖
$imagick = new Imagick($imagesPath);
$imagick = $imagick->flattenImages();
$imagick->setImageFormat('jpg');
$imagick->writeImage($imgPath);
第一份的PNG經由這個程式輸出的尺寸,會是正常的 710*490
但第二份則會直接生成 2961*2045
雖然我推測跟那個300解析的設定有關係。只是試了幾種方式還是解決不了這個問題。
想問看看有沒有前輩們曾經處理過這樣的問題。
這邊可能有些要先事先說明。因為這是要做印刷用的。其尺寸共有三片,都是定義好的東西。
所以要做尺寸調整的話,很容易發生跑版。
畢竟只有一張圖會經由 canvas 生成,其它2片並不會。所以如果做尺寸調整,多少都會發生對不上的問題。
所以希望是能不調整的設定為主。
這可以直接設定圖片解析度為 300 dpi
$imagick->setImageResolution(300, 300);
參考:Imagick::setImageResolution
題外話
點陣圖最原始單位是 px(Pixel),代表真實的資料
而印刷或是 pdf 常用的尺寸是 pt,相當於 1/72 inch(1 inch = 25.4 mm)
發問中的 710 x 490 單位其實是 pt
而圖檔的 2961 x 2045 單位是 px
pt 是現實生活中的長度,px 只是代表長寬有多少個資料點
兩者的換算是透過 dpi 這個參數