Наложение текстуры на изображение на PHP
Наложение текстуры на изображение на PHP
Продолжаем раскрывать тему по созданию графических эффектов на PHP. Сегодня будем совмещать два изображения, а точнее, накладывать текстуру на исходное изображение. При правильно подобранной текстуре можно получить эффект картины на холсте, настенного граффити или рисунка на бумаге. Впрочем, фантазию никто не отменял, совмещая два совершенно разных изображения, можно получить очень интересные результаты.
Наложение текстуры на изображение на PHP
Наложение текстуры на изображение на PHP
Теоретически картинка с текстурой может быть любого формата и размера, но лучше всего использовать 24- или 32-битные бесшовные изображения в оттенках серого. При совмещении с основным изображением текстура будет накладывать плиткой, поэтому важно, чтобы стыки по вертикали и горизонтали были как можно точнее совместимы. Как вариант можно использовать в качестве текстуры водяной знак, ниже есть пример готовой картинки.
Code (PHP) : Убрать нумерацию
- $texture='texture.png';
- $file='image.jpg';
- // Основное изображение
- $im=ImageCreateFromJPEG($file);
- $width=ImageSX($im);
- $height=ImageSY($im);
- // Текстура
- $tx=ImageCreateFromPNG($texture);
- $txwidth=ImageSX($tx);
- $txheight=ImageSY($tx);
- for ($x=0; $x<$width; $x++) {
- for ($y=0; $y<$height; $y++) {
- // Получить точку из текстуры и преобразовать ее в оттенок серого
- $rgb=ImageColorAt($tx,($x%$txwidth),($y%$txheight));
- $R=($rgb >> 16) & 0xFF;
- $G=($rgb >> 8) & 0xFF;
- $B=$rgb & 0xFF;
- $gray=intval(0.2126*$R+0.7152*$G+0.0722*$B);
- // Получить точку исходного изображения
- $rgb=ImageColorAt($im,$x,$y);
- $R=($rgb >> 16) & 0xFF;
- $G=($rgb >> 8) & 0xFF;
- $B=$rgb & 0xFF;
- // Совместить изображения
- if ($gray<128) {
- $_R = ($gray*$R)>>7;
- $_G = ($gray*$G)>>7;
- $_B = ($gray*$B)>>7;
- }
- else {
- $_R = (255-(((255-$gray)*(255-$R))>>7));
- $_G = (255-(((255-$gray)*(255-$G))>>7));
- $_B = (255-(((255-$gray)*(255-$B))>>7));
- }
- $new_color=ImageColorAllocate($im, $_R, $_G, $_B);
- ImageSetPixel($im,$x,$y,$new_color);
- }
- }
- // Вывести готовое изображение в браузер
- header("Content-type: image/jpeg");
- ImageJPEG($im,NULL,100);
- // Прибраться за собой
- ImageDestroy($im);
- ImageDestroy($tx);
Наложение текстуры на изображение на PHP
Наложение текстуры на изображение на PHP
Наложение текстуры на изображение на PHP
Наложение текстуры на изображение на PHP
Наложение текстуры на изображение на PHP
Как видите, результат ограничивается только вашей фантазией. Все изображения в статье сгенерированы скриптом, никаких графических редакторов при их создании не применялось.
Просмотров: 711 | Комментариев: 3
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Добавить комментарий
Заполните форму для добавления комментария