PHP图像处理莫尔效应

时间:2011-09-17 18:41:58

标签: php image

我正在创建一个人们可以上传自己背景图片的网站。用户真正理解问题的一个方面是图像大小和分辨率。如果我说'确保你的背景至少是1080x1920像素(Full HiDef)'我猜一个好的70%的人不会知道这意味着什么或怎么做。

所以我想做的是以更好的方式放大小图像,而不仅仅是让它们变得模糊。我想做的是这样的事情: - http://nanotux.com/plugins/fullscreenr/index.html 基本上每隔一个点都是一个黑色像素,那么当它们被拉伸到1080x1920并且通常看起来更好时,小图像将是两倍大小。

有没有人知道用PHP的图像功能做到这一点的方法? (另外,有人知道应该调用这种效果吗?莫尔?这是准确的吗?)

提前致谢

2 个答案:

答案 0 :(得分: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来提高质量。

答案 1 :(得分:1)

最佳方式是“手动”创建透明栅格(.png)(即在jakub.gieryluk的解决方案中以编程方式创建),并通过imagecopy()覆盖(如果需要,多次)

逐个像素地绘制是非常缓慢的。