When using GD, please make sure of the following things:
1. The file that is used to manipulate images is saved as ANSI format and not UTF-8
2. There is no space in front of the opening tag <?phpGD
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
GD
Референца за `book.image.php` со подобрена типографија и навигација.
Обработка на слики и GD
Вовед
PHP не е ограничен само на создавање HTML излез. Исто така може да се користи за создавање и манипулирање со датотеки со слики во различни формати на слики, вклучувајќи GIF, PNG, JPEG, WBMPПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во XPM. Уште попогодно, PHP може директно да емитува слики до прелистувачот. Ќе треба да го компајлирате PHP со GD библиотеката со функции за слики за ова да работи. GD и PHP може да бара и други библиотеки, во зависност од тоа со кои формати на слики сакате да работите.
Можете да ги користите функциите за слики во PHP за да ја добиете големината на JPEG, GIF, PNG, SWF, TIFF and JPEG2000 images.
Со exif екстензијата, можете да работите со информациите зачувани во заглавјата на JPEG and TIFF сликите. На овој начин можете да читате метаподатоци генерирани од дигитални фотоапарати. exif функциите не бараат GD library.
Забелешка: Прочитајте го делот за барања за тоа како да ги проширите можностите за слики за читање, пишување и модифицирање слики. За да читате метаподатоци од слики направени од дигитални фотоапарати, ви требаат гореспоменатите exif екстензијата.
Забелешка: На getimagesize() функцијата не бара GD екстензијата.
Додека вградената верзија на GD библиотеката користи Zend менаџер за меморија за распределба на меморија, системските верзии не, така што memory_limit не важи.
GD поддржува разновидни формати, подолу е список на формати поддржани од GD и белешки за нивната достапност, вклучувајќи поддршка за читање/пишување.
| Формат | Поддршка за читање | Поддршка за пишување | Белешки |
|---|---|---|---|
| JPEG | true |
true |
|
| PNG | true |
true |
|
| GIF | true |
true |
|
| XBM | true |
true |
|
| XPM | true |
false |
|
| WBMP | true |
true |
|
| WebP | true |
true |
|
| BMP | true |
true |
Достапно од PHP 7.2.0 |
Иако повеќето формати се достапни за читање и запишување во горната табела, тоа не значи дека PHP е компајлиран со поддршка за нив. За да дознаете кои формати биле достапни за GD при компајлирање, користете ја gd_info() функцијата, за повеќе информации за компајлирање на поддршка за еден или повеќе формати, видете го поглавјето за инсталација.
- Installing/Configuring
- Претходно дефинирани константи
- Примери
- GD и функции за слики
- gd_info — Презема информации за моментално инсталираната GD библиотека
- getimagesize — Добијте ја големината на сликата
- getimagesizefromstring — Добијте ја големината на сликата од стринг
- image_type_to_extension — Добијте екстензија на датотека за тип на слика
- image_type_to_mime_type — Добијте Mime-Type за тип на слика вратен од getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
- image2wbmp — Прикажете слика во прелистувач или датотека
- imageaffine — Вратете слика што содржи афински трансформирана изворна слика, користејќи опционална област за сечење
- imageaffinematrixconcat — Спојува две матрици за афинска трансформација
- imageaffinematrixget — Добијте матрица за афинска трансформација
- imagealphablending — Поставете го режимот на мешање за слика
- imageantialias — Дали да се користат функции за анти-алијасинг или не
- imagearc — Црта лак
- imageavif — Прикажете слика во прелистувач или датотека
- imagebmp — Прикажете BMP слика во прелистувач или датотека
- imagechar — Цртајте карактер хоризонтално
- imagecharup — Цртајте карактер вертикално
- imagecolorallocate — Алоцирајте боја за слика
- imagecolorallocatealpha — Алоцирајте боја за слика
- imagecolorat Земи го индексот на бојата на пиксел
- imagecolorclosest Земи го индексот на најблиската боја до наведената боја
- imagecolorclosestalpha Земи го индексот на најблиската боја до наведената боја + алфа
- imagecolorclosesthwb Земи го индексот на бојата која ја има нијансата, белата и црнината
- imagecolordeallocate Ослободи боја за слика
- imagecolorexact Земи го индексот на наведената боја
- imagecolorexactalpha Земи го индексот на наведената боја + алфа
- imagecolormatch Направи боите од палетата верзија на сликата да одговараат поблиску на вистинската верзија на бојата
- imagecolorresolve Земи го индексот на наведената боја или нејзината најблиска можна алтернатива
- imagecolorresolvealpha Земи го индексот на наведената боја + алфа или нејзината најблиска можна алтернатива
- imagecolorset Постави ја бојата за наведениот индекс на палетата
- imagecolorsforindex Земи ги боите за индекс
- imagecolorstotal Дознај го бројот на бои во палетата на сликата
- imagecolortransparent Дефинирај боја како проѕирна
- imageconvolution Примени матрица за конволуција 3x3, користејќи коефициент и поместување
- imagecopy Копирај дел од слика
- imagecopymerge Копирај и спој дел од слика
- imagecopymergegray Копирај и спој дел од слика со сива скала
- imagecopyresampled Копирај и преоформи дел од слика со преземање примероци
- imagecopyresized Копирај и преоформи дел од слика
- imagecreate — Создај нова палета базирана слика
- imagecreatefromavif — Создај нова слика од датотека или URL
- imagecreatefrombmp — Создај нова слика од датотека или URL
- imagecreatefromgd — Создај нова слика од GD датотека или URL
- imagecreatefromgd2 — Создај нова слика од GD2 датотека или URL
- imagecreatefromgd2part — Создај нова слика од даден дел од GD2 датотека или URL
- imagecreatefromgif — Создај нова слика од датотека или URL
- imagecreatefromjpeg — Создај нова слика од датотека или URL
- imagecreatefrompng — Создај нова слика од датотека или URL
- imagecreatefromstring — Создај нова слика од сликата во стринг
- imagecreatefromtga — Создај нова слика од датотека или URL
- imagecreatefromwbmp — Создај нова слика од датотека или URL
- imagecreatefromwebp — Создај нова слика од датотека или URL
- imagecreatefromxbm — Создај нова слика од датотека или URL
- imagecreatefromxpm — Создај нова слика од датотека или URL
- imagecreatetruecolor — Создај нова слика во вистинска боја
- imagecrop — Исечи слика до дадениот правоаголник
- imagecropauto — Автоматски исечи слика користејќи еден од достапните режими
- imagedashedline — Нацртај испрекината линија
- imagedestroy — Уништи слика
- imageellipse — Нацртај елипса
- imagefill — Пополни со боја
- imagefilledarc — Нацртај и пополни делумен лак
- imagefilledellipse — Нацртај пополнета елипса
- imagefilledpolygon — Нацртај пополнет полигон
- imagefilledrectangle — Нацртај пополнет правоаголник
- imagefilltoborder — Пополни до специфична боја
- imagefilter — Примени филтер на слика
- imageflip — Преврти слика користејќи даден режим
- imagefontheight — Земи висина на фонт
- imagefontwidth — Земи ширина на фонт
- imageftbbox — Дај го граничниот правоаголник на текст користејќи фонтови преку freetype2
- imagefttext — Пиши текст на слика користејќи фонтови со FreeType 2
- imagegammacorrect — Примени гама корекција на GD слика
- imagegd — Извези GD слика во прелистувач или датотека
- imagegd2 — Извези GD2 слика во прелистувач или датотека
- imagegetclip — Земи го клипинг правоаголникот
- imagegetinterpolation — Земи го методот на интерполација
- imagegif — Прикажете слика во прелистувач или датотека
- imagegrabscreen — Сними цел екран
- imagegrabwindow — Сними прозорец
- imageinterlace — Овозможи или оневозможи испреплетување
- imageistruecolor — Откриј дали сликата е слика со вистинска боја
- imagejpeg — Прикажете слика во прелистувач или датотека
- imagelayereffect — Постави го знамето за алфа мешање за да користиш ефекти на слоеви
- imageline — Нацртај линија
- imageloadfont — Вчитај нов фонт
- imageopenpolygon — Црта отворен полигон
- imagepalettecopy — Копирај ја палетата од една слика на друга
- imagepalettetotruecolor — Конвертирај слика базирана на палета во вистинска боја
- imagepng — Извези PNG слика во прелистувач или датотека
- imagepolygon — Црта полигон
- imagerectangle — Нацртај правоаголник
- imageresolution — Нацртај правоаголник
- imagerotate — Добиј или постави резолуција на сликата
- imagesavealpha — Ротирај слика со даден агол
- imagescale — Дали да се задржат целосни информации за алфа каналот при зачувување на слики
- imagesetbrush — Намали или зголеми слика со дадена нова ширина и висина
- imagesetclip — Постави ја четката за цртање линии
- imagesetinterpolation — Постави го клипинг правоаголникот
- imagesetpixel — Постави го методот за интерполација
- imagesetstyle — Постави еден пиксел
- imagesetthickness — Постави го стилот за цртање линии
- imagesettile — Постави ја дебелината за цртање линии
- imagestring — Постави ја плочката за пополнување
- imagestringup — Нацртај стринг хоризонтално
- imagesx — Нацртај стринг вертикално
- imagesy — Добиј ширина на сликата
- imagetruecolortopalette — Добиј висина на сликата
- imagettfbbox — Конвертирај слика со вистинска боја во палета слика
- imagettftext — Дај го граничниот бокс на текст користејќи TrueType фонтови
- imagetypes — Напиши текст на сликата користејќи TrueType фонтови
- imagewbmp — Прикажете слика во прелистувач или датотека
- imagewebp — Излезте слика WebP во прелистувач или датотека
- imagexbm — Излезте слика во WebP формат во прелистувач или датотека
- iptcembed — Излезте слика во XBM формат во прелистувач или датотека
- iptcparse — Вградете бинарни IPTC податоци во JPEG слика
- jpeg2wbmp — Парсирајте бинарен IPTC блок во поединечни ознаки
- png2wbmp — Конвертирајте JPEG слика во WBMP слика
- GdImage — Класата GdImage
- GdFont — Класата GdFont
Белешки од корисници 5 белешки
hello there,
i made a function to create a gradient image.
description:
gradient(int image_width, int image_height,
int start_red, int start_green, int start_blue,
int end_red, int end_green, int end_blue,
bool vertical)
function:
<?php
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);
}
?>You know, maybe this goes without saying, but I thought I would drop a note in here. When developing code to resize images, it is best not to use GD. When using the current GD methodologies, you are reading content from an image and manipulating it. By then writing that content to a brand new file, you are losing the EXIF data.
For purposes when you want to retain EXIF data, it is recommended that you compile in and use the PECL Imagick extension. It has great resizing methods built right in and the EXIF data is retained.I have been looking to send the output from GD to a text string without proxying via a file or to a browser.
I have come up with a solution.
This code buffers the output between the ob_start() and ob_end() functions into ob_get_contents()
See the example below
<?php
// 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 );
?>
Enjoy!
AshleyIn 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
?>