PHP.mk документација

GD

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

book.image.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека book.image.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
GD

Референца за `book.image.php` со подобрена типографија и навигација.

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 и белешки за нивната достапност, вклучувајќи поддршка за читање/пишување.

Формати поддржани од 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() функцијата, за повеќе информации за компајлирање на поддршка за еден или повеќе формати, видете го поглавјето за инсталација.

Белешки од корисници 5 белешки

— Конвертирајте PNG слика во WBMP слика
пред 14 години
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 <?php
kurdtpage на gmail точка com
пред 15 години
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); 
}
?>
Томас
пред 17 години
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.
mail на ecross точка nl
пред 17 години
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!
Ashley
code на ashleyhunt точка co точка uk
пред 14 години
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
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.