Хостинг для картинок на прозрачном фоне в формате PNG

Найдите изображения Png. ✓ Бесплатно для коммерческого использования ✓ Ссылка на источник не требуется ✓ Не защищено авторскими правами

Сервис Pixlr задаём один цвет фону

Другой инструмент чтобы сделать прозрачный фон онлайн – это похожий на «Фотошоп» онлайн-редактор Pixlr. Он обладает значительным числом возможностей, но нас интересует в первую очередь создание прозрачного фона онлайн.

  1. После загрузки изображения оно появится в окне редактирования, нас же интересует окошко «Слои» справа, с расположенной в нём опцией «Задний слой» с замочком.

  2. Дважды кликните на замочек, и вместо замочка появится галочка.
  3. Теперь кликаем на «Волшебную палочку» в панели инструментов слева (обычно это третья иконка сверху на левом столбце), нажимаем ею на фон картинки (он помечается соответствующей линией), а затем жмём на клавишу «Delete» для удаления фона. Возможно, так придётся сделать несколько раз, добиваясь полного удаления ненужного фона на фото.
  4. После того, как вы полностью избавитесь от фона, нажмите на кнопку «Файл», и там выберите «Сохранить».
  5. В качестве расширения сохранённого файла выбирайте png, иначе прозрачный фон онлайн pixlr может быть утрачен.

Ресайзим GIF

А вот GIF-е прозрачность реализованна по-другому. В нем один из используемых цветов (любой, на выбор автора картинки) объявляется как прозрачный, и при отрисовке данной картинки пиксели имеющие данный цвет заменяются прозрачными пикселями. Такая вот «псевдо-прозрачность»:
И единственная причина по которой может появится фон в прозрачной GIF — программист забывает указать «прозрачный» цвет.

В php за это отвечает функция imagecolortransparent — задает прозрачный цвет. Но сначала необходимо узнать использует ли вообще наша GIF прозрачность, это делается с помощью этой же функции. Полный алгоритм должен выглядеть приблизительно так:

PHP

//Создаем изображение, кстати для GIF можно использовать обычную imagecreate, но лучше все таки везде использовать imagecreatetruecolor
$destination_resource=imagecreatetruecolor($newwidth, $newheight);

//Получаем прозрачный цвет
$transparent_source_index=imagecolortransparent($source_resource);

//Проверяем наличие прозрачности
if($transparent_source_index!==-1){
$transparent_color=imagecolorsforindex($source_resource, $transparent_source_index);

//Добавляем цвет в палитру нового изображения, и устанавливаем его как прозрачный
$transparent_destination_index=imagecolorallocate($destination_resource, $transparent_color, $transparent_color, $transparent_color);
imagecolortransparent($destination_resource, $transparent_destination_index);

//На всякий случай заливаем фон этим цветом
imagefill($destination_resource, 0, 0, $transparent_destination_index);
}

//Ресайз
imagecopyresampled($destination_resource, $source_resource, 0, 0, 0, 0, $newwidth, $newheight, $oldwidth, $oldheight);

//Сохранение
imagegif($destination_resource, $destination_path);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

//Создаем изображение, кстати для GIF можно использовать обычную imagecreate, но лучше все таки везде использовать imagecreatetruecolor

$destination_resource=imagecreatetruecolor($newwidth,$newheight);

 
//Получаем прозрачный цвет

$transparent_source_index=imagecolortransparent($source_resource);

 
//Проверяем наличие прозрачности

if($transparent_source_index!==-1){

$transparent_color=imagecolorsforindex($source_resource,$transparent_source_index);

//Добавляем цвет в палитру нового изображения, и устанавливаем его как прозрачный

$transparent_destination_index=imagecolorallocate($destination_resource,$transparent_color’red’,$transparent_color’green’,$transparent_color’blue’);

imagecolortransparent($destination_resource,$transparent_destination_index);

//На всякий случай заливаем фон этим цветом

imagefill($destination_resource,,,$transparent_destination_index);

}
 
//Ресайз

imagecopyresampled($destination_resource,$source_resource,,,,,$newwidth,$newheight,$oldwidth,$oldheight);

 
//Сохранение

imagegif($destination_resource,$destination_path);

Можно конечно, чуть короче и проще, но на мой взгляд так намного нагляднее.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий