Я хочу знать, как построены такие сайты, как http://photofunia.com/ и другие сайты онлайн-фотоэффектов. Например, используя php, я хочу объединить два изображения frame.png с profile.jpg. Я хочу, чтобы мой frame.png был прозрачным в центре, где я бы разместил свой profile.jpg.
Я пробовал это, но он не работает:
<?php $dest = imagecreatefromjpeg('dest.jpg'); $src = imagecreatefrompng('logo.png'); $src = imagerotate($src, 90, imageColorAllocateAlpha($src, 0, 0, 0, 127)); $almostblack = imagecolorallocate($src,254,254,254); $src = imagecolortransparent($src,$almostblack); imagealphablending($dest, true); imagesavealpha($dest, 0); imagecopymerge($dest, $src, 900,600, 1, 1, 90,90, 90);
Заранее спасибо. Пожалуйста, помогите мне.
Вы получили более технический ответ, поэтому я собираюсь сосредоточиться на творческом аспекте вещей. Вы также упомянули знакомство с связанными php
библиотеками и даже с предыдущими попытками создать похожие композиции, которые в конце концов не хватали блеска.
На мой взгляд, это стремление гораздо больше зависит от артистизма, творчества и, самое главное, от подготовленных активов. При ручной подготовке этих изображений у вас будет больше утонченности над конечным результатом, а также оставить только простой композитинг для php
. Не весь процесс редактирования.
Честно говоря, такие подробные результаты не достижимы с помощью API. Для этого проекта потребуются часы ручной работы и редактирования. Обращаем внимание на освещение, прозрачность и цвета.
Наиболее впечатляющими эффектами являются те, где объекты на фотографии перекрывают добавленный пользователем образ. То есть:
Хотя этот пример довольно прост, та же логика относится к более сложным композициям.
При рассмотрении приведенного выше примера вы можете уйти с одним слоем в Photoshop. Просто вырежьте отверстие, где фотографии будут размещены и экспортированы как png
.
В других примерах я бы рекомендовал отдельные фоновые и передние слои с добавленным пользователем изображением, расположенным между ними.
Это еще один замечательный пример, когда разрешение имеет первостепенное значение. Листья слишком малы, чтобы эффективно маскироваться с крошечным разрешением. Некоторые листья также могут быть размыты и не в фокусе; опять же, не разрезайте их жесткими линиями. Для достижения наилучших результатов используйте мягкую кисть, маскируя их в Photoshop.
И последнее, но не менее важное: вот очень простой практический пример.
Обратите внимание, как фоновое изображение имеет гладкую маску, в то время как лист имеет жесткий. Честно говоря, части листа не в фокусе и могут быть дополнительно уточнены. Вложение времени, которое вы сделаете здесь, сделает мир разницей в том, насколько убедительны ваши окончательные результаты.
Сохраните каждый слой как png
и составной в php
. Я бы рекомендовал убедиться, что каждый png
имеет одинаковое измерение. Не пытайтесь расположить крошечный png
над большим. Дайте им одинаковые размеры, чтобы сделать выравнивание легким.
Отвечая на ваши вопросы:
Для этого Adobe не предоставляет API. Однако вы можете использовать Adobe Creative SDK для своих материалов для редактирования фотографий.
Обычно используется множество библиотек Javascript. вы можете проверять библиотеки обработки изображений в кодеге
Если вы настаиваете на использовании php, лучше всего пойти с ImageMagick или с помощью библиотеки GD для обработки изображений . Именно разработчик должен сделать эти результаты «идеальными», как вы это называете. Есть некоторые интересные библиотеки редактирования изображений php, которые вы можете проверить, многие из которых поддерживаются до настоящего времени!
Для слияния изображений вы можете перейти к официальным документам для imagecopymerge или, возможно, использовать библиотеку Imagick / GD. Этот пост SO может дать вам головной убор.
Вы также можете использовать Gmagick, который является вилкой ImageMagick и быстрее (см. Тест ) при обработке изображений (хотя ценой меньших функций). Оригинальный проект можно найти в graphicsmagick . Идя строго по Php, лично, я бы рекомендовал ImageMagick с учетом его скорости, богатого набора функций, популярности, поддержки, документации и примеров.
Дополнительная ссылка:
Если бы я понял вопрос, тогда ему не нужно быть js, Css сделает трюк. Посмотрите на альфа и непрозрачность и z-index
#img1{position:absolute;top:0px;} #img2{position:absolute;top:50px;opacity:.6;}
<img src="http://lorempixel.com/400/200/sports/1" id="img1"> <img src="http://lorempixel.com/50/50/sports/2" id="img2">