我正在创建一个人们可以上传自己背景图片的网站。用户真正理解问题的一个方面是图像大小和分辨率。如果我说'确保你的背景至少是1080x1920像素(Full HiDef)'我猜一个好的70%的人不会知道这意味着什么或怎么做。
所以我想做的是以更好的方式放大小图像,而不仅仅是让它们变得模糊。我想做的是这样的事情: - http://nanotux.com/plugins/fullscreenr/index.html 基本上每隔一个点都是一个黑色像素,那么当它们被拉伸到1080x1920并且通常看起来更好时,小图像将是两倍大小。
有没有人知道用PHP的图像功能做到这一点的方法? (另外,有人知道应该调用这种效果吗?莫尔?这是准确的吗?)
提前致谢
答案 0 :(得分:2)
如果我理解你,你想在拉伸图像上将x
和y
尺寸中的每个第二个像素设置为黑色?
这应该可以解决问题(未经过测试,我依赖于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);
}
}
文档:imagesetpixel,imagecolorallocate,imagecopyresampled, imagecreatetruecolor
在那里阅读PHP文档和示例。请务必使用imagecopyresampled
代替imagecopyresized
来提高质量。
答案 1 :(得分:1)
最佳方式是“手动”创建透明栅格(.png)(即在jakub.gieryluk的解决方案中以编程方式创建),并通过imagecopy()
覆盖(如果需要,多次)
逐个像素地绘制是非常缓慢的。