Наш чат в Telegram для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov

Обработка изображений и GD

  • Введение
  • Установка и настройка
    • Требования
    • Установка
    • Настройка во время выполнения
    • Типы ресурсов
  • Предопределенные константы
  • Примеры
  • GD и функции для работы с изображениями Функции
    • gd_info — Вывод информации о текущей установленной GD библиотеке
    • getimagesize — Получение размера изображения
    • getimagesizefromstring — Получение размера изображения из строки данных
    • image_type_to_extension — Получение расширения файла для типа изображения
    • image_type_to_mime_type — Получение Mime-типа для типа изображения, возвращаемого функциями getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
    • image2wbmp — Выводит изображение в браузер или пишет в файл
    • imageaffine — Return an image containing the affine tramsformed src image, using an optional clipping area
    • imageaffinematrixconcat — Concat two matrices (as in doing many ops in one go)
    • imageaffinematrixget — Return an image containing the affine tramsformed src image, using an optional clipping area
    • imagealphablending — Задание режима сопряжения цветов для изображения
    • imageantialias — Требуется ли применять функции сглаживания или нет
    • imagearc — Рисование дуги
    • imagechar — Рисование символа по горизонтали
    • imagecharup — Рисование символа вертикально
    • imagecolorallocate — Создание цвета для изображения
    • imagecolorallocatealpha — Создание цвета для изображения
    • imagecolorat — Получение индекса цвета пиксела
    • imagecolorclosest — Получение индекса цвета ближайшего к заданному
    • imagecolorclosestalpha — Получение индекса цвета ближайшего к заданному с учетом прозрачности
    • imagecolorclosesthwb — Получение индекса цвета, имеющего заданный тон, белизну и затемнение
    • imagecolordeallocate — Разрыв ассоциации переменной с цветом для заданного изображения
    • imagecolorexact — Получение индекса заданного цвета
    • imagecolorexactalpha — Получение индекса заданного цвета и альфа компонента
    • imagecolormatch — Делает цвета палитровой версии изображения более соответствующими truecolor версии
    • imagecolorresolve — Получает идентификатор конкретного цвета или его ближайший аналог
    • imagecolorresolvealpha — Получает идентификатор конкретного цвета и альфа компонента или его ближайший аналог
    • imagecolorset — Установка набора цветов для заданного индекса палитры
    • imagecolorsforindex — Получение цветов, соответствующих индексу
    • imagecolorstotal — Определение количества цветов в палитре изображения
    • imagecolortransparent — Определяет цвет как прозрачный
    • imageconvolution — Наложение искривляющей матрицы 3х3, используя коэффициент и смещение
    • imagecopy — Копирование части изображения
    • imagecopymerge — Копирует часть изображения с наложением
    • imagecopymergegray — Копирует часть изображения с наложением в градациях серого
    • imagecopyresampled — Копирование и изменение размера изображения с ресемплированием
    • imagecopyresized — Копирование и изменение размера части изображения
    • imagecreate — Создание нового палитрового изображения
    • imagecreatefromgd2 — Создание нового изображения на основе GD2 или URL
    • imagecreatefromgd2part — Создание нового изображения на основе части GD2 файла или URL
    • imagecreatefromgd — Создание нового изображения на основе GD файла или URL
    • imagecreatefromgif — Создает новое изображение из файла или URL
    • imagecreatefromjpeg — Создает новое изображение из файла или URL
    • imagecreatefrompng — Создает новое изображение из файла или URL
    • imagecreatefromstring — Создание нового изображения из потока представленного строкой
    • imagecreatefromwbmp — Создает новое изображение из файла или URL
    • imagecreatefromwebp — Создает новое изображение из файла или URL
    • imagecreatefromxbm — Создает новое изображение из файла или URL
    • imagecreatefromxpm — Создает новое изображение из файла или URL
    • imagecreatetruecolor — Создание нового полноцветного изображения
    • imagecrop — Crop an image using the given coordinates and size, x, y, width and height
    • imagecropauto — Crop an image automatically using one of the available modes
    • imagedashedline — Рисование пунктирной линии
    • imagedestroy — Уничтожение изображения
    • imageellipse — Рисование эллипса
    • imagefill — Заливка
    • imagefilledarc — Рисование и заливка дуги
    • imagefilledellipse — Рисование закрашенного эллипса
    • imagefilledpolygon — Рисование закрашенного многоугольника
    • imagefilledrectangle — Рисование закрашенного прямоугольника
    • imagefilltoborder — Заливка цветом
    • imagefilter — Применяет фильтр к изображению
    • imageflip — Flips an image using a given mode
    • imagefontheight — Получение высоты шрифта
    • imagefontwidth — Получение ширины шрифта
    • imageftbbox — Определение границ текста выводимого шрифтом freetype2
    • imagefttext — Нанесение текста на изображение, используя шрифты FreeType 2
    • imagegammacorrect — Применение гамма коррекции к GD изображению
    • imagegd2 — Вывод GD2 изображения в броузер или файл
    • imagegd — Вывод GD-изображения в браузер или в файл
    • imagegif — Выводит изображение в браузер или пишет в файл
    • imagegrabscreen — Захватывает изображение с экрана
    • imagegrabwindow — Захватывает изображение окна
    • imageinterlace — Включение или выключение интерлейсинга
    • imageistruecolor — Определяет, является ли изображение полноцветным
    • imagejpeg — Выводит изображение в браузер или пишет в файл
    • imagelayereffect — Установка флага альфа сопряжения для использования эффектов наложения изображений встроенной libgd библиотеки
    • imageline — Рисование линии
    • imageloadfont — Загрузка шрифта
    • imagepalettecopy — Копирование палитры из одного изображения в другое
    • imagepalettetotruecolor — Converts a palette based image to true color
    • imagepng — Вывод PNG изображения в броузер или файл
    • imagepolygon — Рисование многоугольника
    • imagepsbbox — Выдает параметры рамки, обрамляющей текст написанный шрифтом PostScript Type1
    • imagepsencodefont — Изменение вектора кодировки шрифта
    • imagepsextendfont — Растягивание или сжатие шрифта
    • imagepsfreefont — Освобождение памяти, занятой шрифтом PostScript Type
    • imagepsloadfont — Загрузка шрифта PostScript Type 1 из файла
    • imagepsslantfont — Наклон шрифта
    • imagepstext — Рисование текста поверх изображения, используя шрифты PostScript Type1
    • imagerectangle — Рисование прямоугольника
    • imagerotate — Поворот изображения с заданным углом
    • imagesavealpha — Установка флага сохранения всей информации альфа компонента (в противовес одноцветной прозрачности) и сохранение PNG изобаржения
    • imagescale — Scale an image using the given new width and height
    • imagesetbrush — Установка изображения (кисти), посредством которого будут рисоваться линии
    • imagesetinterpolation — Set the interpolation method
    • imagesetpixel — Рисование точки
    • imagesetstyle — Установка стиля рисования линий
    • imagesetthickness — Установка толщины линий
    • imagesettile — Установка изображения, которое будет использовано в качестве элемента мозаичной заливки
    • imagestring — Рисование строки текста горизонтально
    • imagestringup — Рисование строки текста вертикально
    • imagesx — Получение ширины изображения
    • imagesy — Получение высоты изображения
    • imagetruecolortopalette — Преобразование полноцветного изображения в палитровое
    • imagettfbbox — Получение параметров рамки обрамляющей текст написанный TrueType шрифтом
    • imagettftext — Рисование текста на изображении шрифтом TrueType
    • imagetypes — Возвращает список типов изображений, поддерживаемых PHP сборкой
    • imagewbmp — Выводит изображение в браузер или пишет в файл
    • imagewebp — Output an WebP image to browser or file
    • imagexbm — Вывод XBM изображения в броузер или файл
    • iptcembed — Встраивание двоичных IPTC данных в JPEG изображение
    • iptcparse — Разбор двоичных IPTC данных на отдельные тэги
    • jpeg2wbmp — Конвертирует изображение из формата JPEG в WBMP
    • png2wbmp — Преобразование PNG файла в WBMP

User Contributed Notes 8 notes



6
code at ashleyhunt dot co dot uk5 years ago
// Create a test source image for this example
$im = imagecreatetruecolor(300, 50);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);
// start buffering
ob_start();
// output jpeg (or any other chosen) format & quality
imagejpeg($im, NULL, 85);
// capture output to string
$contents = ob_get_contents();
// end capture
ob_end_clean();
// be tidy; free up memory
imagedestroy($im);
// lastly (for the example) we are writing the string to a file
$fh = fopen("./temp/img.jpg", "a+" );
    fwrite( $fh, $contents );
fclose( $fh );


4
kurdtpage at gmail dot com2 years ago
3 
 herbert dot walde at googlemail dot com ¶1 year ago
 In case your script is using output-buffering-functions somewhere, then you have to clear the buffer first ( with ob_clear() ), before outputting an image with a function like imagepng(). 
And you should make sure that no buffer will get send after outputing an image by using the ob_end_flush()-function.
Furthermore you should check if a buffer has already been flushed somewhere before. This can be done using the headers_sent()-function.
Here is the full solution:
<?php
if(headers_sent()){
    die('Headers have been send somewhere within my script');
}
ob_clean(); //Clears the buffer
header('Content-type: image/png');
imagepng($img, NULL, 0,  NULL);
ob_end_flush(); //Now we send the header and image plus we make sure that nothing will get send from now on (including possible shutdown-functions and __destruct()-methods) till the end of page-execution


1
mail at ecross dot nl3 years ago
function gradient($image_width, $image_height,$c1_r, $c1_g, $c1_b, $c2_r, $c2_g, $c2_b, $vertical=false)
{
// first: lets type cast;
$image_width = (integer)$image_width;
$image_height = (integer)$image_height;
$c1_r = (integer)$c1_r;
$c1_g = (integer)$c1_g;
$c1_b = (integer)$c1_b;
$c2_r = (integer)$c2_r;
$c2_g = (integer)$c2_g;
$c2_b = (integer)$c2_b;
$vertical = (bool)$vertical;
// create a image
$image  = imagecreatetruecolor($image_width, $image_height); 
// make the gradient
for($i=0; $i<$image_height; $i++) 
{ 
$color_r = floor($i * ($c2_r-$c1_r) / $image_height)+$c1_r;
$color_g = floor($i * ($c2_g-$c1_g) / $image_height)+$c1_g;
$color_b = floor($i * ($c2_b-$c1_b) / $image_height)+$c1_b;
$color = ImageColorAllocate($image, $color_r, $color_g, $color_b);
imageline($image, 0, $i, $image_width, $i, $color);
} 
# Prints out all the figures and picture and frees memory 
header('Content-type: image/png'); 
if($vertical){$image = imagerotate($image, 90, 0);}
ImagePNG($image); 
imagedestroy($image); 
}


1
donatj at gmail dot com2 years ago
   $img = imagecreatefrompng("image1.png");
   
   $w = imagesx($img);
   $h = imagesy($img);
   
   for($y=0;$y<$h;$y++) {
      for($x=0;$x<$w;$x++) {
         $rgb = imagecolorat($img, $x, $y);
         $r = ($rgb >> 16) & 0xFF;
         $g = ($rgb >> 8) & 0xFF;
         $b = $rgb & 0xFF;         
         echo "#".str_repeat("0",2-strlen(dechex($r))).dechex($r).
str_repeat("0",2-strlen(dechex($g))).dechex($g).
str_repeat("0",2-strlen(dechex($b))).dechex($b).",";
      }
      echo "<br />\r\n";
   }


0
zsolt dot trenyik at gmail dot com3 months ago
According to  kurdtpage at gmail dot com, we faced a fairly strange behavior of GD. We saved an incluce file incorrectly, and everything worked (OCI8, other php functions) except GD. It took one and half day to find the reason, at the end commenting out the require part of the main file. 
The solution was: we took a HEX editor to see if there is a problem with that .inc file. There was some crazy invisible characters before the <?php tag, signing that the text editor saved the file in utf format. These characters cannot be deleted, we had to open a new file in eclipse (notepad++ also works right), copy the visible part of the file to it, replace them, ready. 
Maybe this detailed warning helps somebody.




Смотрите также:
Описание на ru2.php.net
Описание на php.ru