2011-09-17 41 views
1

我正在製作一個網站,人們可以上傳自己的背景圖片。用戶真正遇到的問題之一是圖像尺寸和分辨率。如果我說'確保您的背景至少爲1080x1920像素(Full HiDef)「,我猜測有70%的人不知道這意味着什麼或如何去做。PHP圖像處理莫爾效應

因此,我想要做的是以比較簡單的方式放大小圖像,而不是讓圖像變得模糊。我想要做的是這樣的: - http://nanotux.com/plugins/fullscreenr/index.html 其中基本上所有其他點都是黑色像素,這樣小圖像的尺寸會擴展到1080x1920的兩倍,並且通常看起來更好。

有誰知道用PHP的圖像功能做這件事的方法嗎? (順便說一句,沒有人知道這是什麼類型的效果應該叫什麼名字?莫爾?那會是準確的?)

在此先感謝

回答

2

如果我明白你很好,你想設置每個第二象素xy尺寸在拉伸後的圖像上顯示黑色?

這應該做的伎倆(未測試,我依靠PHP文檔)。

$initialImage = ... // handle to the image 

    $srcWidth = imagesx($initialImage); 
    $srcHeight = imagesy($initialImage); 
    $maxX = 1920; 
    $maxY = 1080; 

    $newImage = imagecreatetruecolor($max_x, $max_y); 
    imagecopyresampled ($newImage, $initialImage, 0,0,0,0, $maxX, $maxY, $srcWidth, $srcHeight); 

    $BLACK = imagecolorallocate($newImage, 0, 0, 0); 
    for($x=0; $x+=2; $x<$max_x){ 
     for($y=0; $y+=2; $y<$max_y){ 
     imagesetpixel($newImage, $x, $y, $BLACK); 
     } 
    } 

文檔:imagesetpixelimagecolorallocateimagecopyresampledimagecreatetruecolor

閱讀PHP文檔和示例。請記住使用imagecopyresampled而不是imagecopyresized以獲得更好的質量。

+0

當然這是簡化版本,這將始終拉伸原來適合1920x1080,你可能想要做一些裁剪等,以維持x:y比率。 –

+0

+1。你可以把我的答案,並將其整合到你的。對我來說沒問題! – Flavius

+0

感謝您的想法,將嘗試併發回結果 –

1

最優化的方式是創建一個透明光柵(png格式)「手動」(即創建它編程爲在jakub.gieryluk的溶液),和覆蓋的是,如果需要的話多次,通過imagecopy()

以像素爲單位進行繪製非常緩慢。

+1

我必須承認你可能是對的。 +1 –

+0

是的想法是通過使每個其他像素變成黑色來擴展圖像,而不是將它們吹起來並使其模糊,然後在其頂部添加莫爾條紋。我不確定我是否正確理解了你,但我認爲按照你的方式去做會意味着把原件的尺寸增加到原來的兩倍(並且使它看起來很垃圾),然後用黑色的(或者做的)替換其他的(垃圾)像素這在組中),在那裏,如果你這樣做,圖像應該保持更多的完整性...我認爲...將發佈結果比較不久:) –

+0

當然,你仍然應該使用'imagecopyresampled'。只是不是'imagesetpixel'。不是在你有一個樣本網格,說100x100寬,重複它的頂部。我的解決方案不是上面的完全替代方案,它只是一種優化。 – Flavius