PHP изображение манипуляции эффект муара - PullRequest
1 голос
/ 17 сентября 2011

Я делаю сайт, где люди могут загружать свои собственные фоновые изображения.Одна из вещей, с которой пользователи действительно сталкиваются с проблемами, это размеры и разрешение изображения.Если я скажу: «Убедитесь, что ваш фон имеет размер не менее 1080x1920 пикселей (Full HiDef)», я предполагаю, что хорошие 70% людей не будут знать, что это значит или как это сделать.сделать, это увеличить небольшие изображения в лучшую сторону, чем просто сделать их размытыми.Я хотел бы сделать что-то вроде этого: - http://nanotux.com/plugins/fullscreenr/index.html, где практически каждая вторая точка представляет собой черный пиксель, поэтому маленькие изображения будут в два раза больше, когда они растянуты до 1080x1920 и в целом выглядят лучше.

Кто-нибудь знает способ сделать это с помощью функций изображения PHP?(кроме того, кто-нибудь знает, как этот тип эффекта должен называться «Муар», это было бы точно?)

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 17 сентября 2011

Если я вас правильно понял, вы хотите установить каждый второй пиксель в 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 голос
/ 17 сентября 2011

Наиболее оптимальный способ - создать прозрачный растр (.png) «вручную» (т.е. создать его программно, как в решении jakub.gieryluk) и наложить его, если необходимо, несколько раз, с помощью imagecopy().

Рисование пиксель за пикселем мучительно медленное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...