我需要拍攝某人通過表格上傳的照片,調整大小,合併高分辨率幀@ 300dpi並保持最佳打印質量@ 300dpi。使用php和GD打印質量圖像
是否可以通過GD處理高分辨率圖像,如果是這樣,您能否提供一些關於如何處理的信息?我有代碼已經做了調整和合並,但我不知道它是否會以正確的dpi工作。
感謝
我需要拍攝某人通過表格上傳的照片,調整大小,合併高分辨率幀@ 300dpi並保持最佳打印質量@ 300dpi。使用php和GD打印質量圖像
是否可以通過GD處理高分辨率圖像,如果是這樣,您能否提供一些關於如何處理的信息?我有代碼已經做了調整和合並,但我不知道它是否會以正確的dpi工作。
感謝
它基本上是可行的:只要使用像素適量。 (dpi
單元在數字成像中沒有意義,它僅用於將數字[像素]圖像轉換爲物理格式)。
例子:
11 x 8 inch canvas @300 dpi = 3300 x 2400 pixels
但是,你需要足夠的內存來處理圖像的這個大。經驗法則是
needed bytes = width x height x 3 (or 4 if alpha-channels are used)
如果您複製或調整大小,則此需求會增加,因爲腳本需要在內存中保留多個副本。
您將需要一個非常慷慨的memory_limit
設置爲此工作。
另請注意,GD只能處理RGB圖像。
對於大圖像和CMYK數據,如果您可以在服務器上使用它,ImageMagick可能是更好的選擇。
DPI是用於打印目的的轉換因子。它對GD如何看待圖像完全沒有影響。無論是10dpi還是5000dpi,200像素乘150像素的圖像總是200像素乘150像素。但是,當您打印出圖像時,200x150 @ 10dpi會爲20英寸x 15英寸圖像(300平方英寸)製作圖像,而5000dpi版本則會製作0.04x0.03(0.0012平方英寸)圖像。
唯一的限制是,你必須有足夠的內存可用於PHP來保存圖像內容在內存中的解碼。 24位1000x1000像素圖像需要1000x1000x3 =大約3meg字節的內存,最小值(加上內部開銷)。然後額外的內存來保存新的圖像,這將有你的圖像處理的結果。
GD是所有關於像素的,DPI並沒有涉及它,因爲這需要某種設備輸出。如果您知道最終的打印尺寸,那麼只需確保像素尺寸在您需要的DPI上正確縮放即可。
一般來說,如果您使用大型圖像,您的主要問題將是速度和內存使用效率。我建議使用ImageMagick來做更復雜的工作。
網頁上的默認圖像dpi是72或96(Mac或Windows/Linux)。您可以使用img標籤的寬度和高度屬性指定圖像的寬度和高度,並在其內生成具有所需dpi的圖像。
<img src="/images/image.png" width="300" height="200">
比方說,您的默認屏幕分辨率是72,不是做出一個$resdpi
變量:
$resdpi = $resolution/72;
然後,使圖像GD由可變寬度和高度相乘,你就會得到一個大的圖像,將在屏幕上顯示爲默認的72dpi,但將以更高的分辨率打印。
全部正確。請注意,CMYK TIFF 3300 x 2400像素大約爲30MB(3300像素x 2400像素x 4色) – horatio 2011-03-29 19:10:39
因此,只要可以確定,只要其正確的像素數匹配300dpi,那麼它會正確打印?我想象它將需要相當多的資源來做高分辨率的樂趣。 – David 2011-03-29 19:18:51
@David將取決於您打算使用的軟件打印它 - 您可能必須指定dpi,才能以正確的格式打印像素。你將無法在位圖文件中做到這一點(至少不能以可靠的方式) – 2011-03-29 20:38:01