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

GD и функции за слики

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

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

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

ref.image.php

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 слика

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

chuckstudios на gmail точка com
пред 17 години
I wrote a simple function to convert an image resource to PGM (portable graymap) in order to feed it to an OCR program. It works just like the rest of the image output functions, and will convert to grayscale for you:

<?php
    function imagepgm($image, $filename = null)
    {
        $pgm = "P5 ".imagesx($image)." ".imagesy($image)." 255\n";
        for($y = 0; $y < imagesy($image); $y++)
        {
            for($x = 0; $x < imagesx($image); $x++)
            {
                $colors = imagecolorsforindex($image, imagecolorat($image, $x, $y));
                $pgm .= chr(0.3 * $colors["red"] + 0.59 * $colors["green"] + 0.11 * $colors["blue"]);
            }
        }
        if($filename != null)
        {
            $fp = fopen($filename, "w");
            fwrite($fp, $pgm);
            fclose($fp);
        }
        else
        {
            return $pgm;
        }
    }
?>
michal-ok на o2 точка pl
20 години пред
The image sharpen function (by Alex R. Austin) provided below seems to be very resource hungry and I couldn't make it work on two different servers - trying to sharpen a 413 x 413 image I ended up with "Fatal error: Allowed memory size of 8388608 bytes exhausted" or "Internal Server Error" or the script terminated without notice. Because I had no priviliges to change the default memory limit on these servers I started looking for other sharpen functions. I have come across a php Unsharp Mask function which works like a charm on both of the servers I dealt with. It can be found at http://vikjavev.no/hovudsida/umtestside.php.
felipensp на gmail точка com
20 години пред
Representation decimal of a color in hexadecimal for use on functions of library GD.

<?php

    // Representation hexadecimal
    $var = '#FFFFFF';

    function getRgbFromGd($color_hex) {

        return array_map('hexdec', explode('|', wordwrap(substr($color_hex, 1), 2, '|', 1)));

    }
    
    print_r(getRgbFromGd($var));

    // Output: Array ( [0] => 255 [1] => 255 [2] => 255 )

?>
shd на earthling точка net
19 години пред
If you happen to need a way to output a Windows BMP file (e.g. when using the PEAR ExcelWriter), feel free to use the following code:

<?php
function imagebmp ($im, $fn = false)
{
    if (!$im) return false;
            
    if ($fn === false) $fn = 'php://output';
    $f = fopen ($fn, "w");
    if (!$f) return false;
            
    //Image dimensions
    $biWidth = imagesx ($im);
    $biHeight = imagesy ($im);
    $biBPLine = $biWidth * 3;
    $biStride = ($biBPLine + 3) & ~3;
    $biSizeImage = $biStride * $biHeight;
    $bfOffBits = 54;
    $bfSize = $bfOffBits + $biSizeImage;
            
    //BITMAPFILEHEADER
    fwrite ($f, 'BM', 2);
    fwrite ($f, pack ('VvvV', $bfSize, 0, 0, $bfOffBits));
            
    //BITMAPINFO (BITMAPINFOHEADER)
    fwrite ($f, pack ('VVVvvVVVVVV', 40, $biWidth, $biHeight, 1, 24, 0, $biSizeImage, 0, 0, 0, 0));
            
    $numpad = $biStride - $biBPLine;
    for ($y = $biHeight - 1; $y >= 0; --$y)
    {
        for ($x = 0; $x < $biWidth; ++$x)
        {
            $col = imagecolorat ($im, $x, $y);
            fwrite ($f, pack ('V', $col), 3);
        }
        for ($i = 0; $i < $numpad; ++$i)
            fwrite ($f, pack ('C', 0));
    }
    fclose ($f);
    return true;
}
?>

It works the same way as regular imagejpeg/imagepng do and only supports GD2.0 true colour bitmaps (which is what's required by ExcelWriter).
delabahan на gmail точка com
пред 9 години
This is an example of get high resolution images.

<?php
 /**
 * Class name      : resizeImage
 * Created by   : wang
 * Description   : This class is to resize the image from original size to new size 
 */
class resizeImage
{
     /**
     * Function name : resize_img
     * Description   : This function is to resize image 
     * @param          : $origimg variable is the original image 
     * @param          : $newimg variable is the new image 
     * @param          : $w variable is the width of image 
     * @param          : $f variable is the height of image 
     */
    public  function resize_img($origimg,$newimg,$w,$h){
        $info = getimagesize($origimg);
        $mime   = $info['mime'];

        // Make sure that the requested file is actually an image
        if(substr($mime, 0, 6) != 'image/')
        {
            header('HTTP/1.1 400 Bad Request');
            return 'Error: requested file is not an accepted type: ' .$origimg;
            exit();
        }

        // Check they extention of image
        $extension = image_type_to_extension($info[2]);
        if(strtolower($extension) == '.png'){
            $img = $this->resize_imagepng($origimg,$w, $h);
            imagepng($img,$newimg);
            imagedestroy($img);
        }elseif(strtolower($extension) == '.jpeg'){
            $img = $this->resize_imagejpeg($origimg, $w, $h);
            imagejpeg($img, $newimg);
            imagedestroy($img);
        }elseif(strtolower($extension == '.gif')){
            $img = $this->resize_imagegif($origimg, $w, $h);
            imagegif($img,$newimg);
            imagedestroy($img);
        }

    }
     /**
     * End function name : resize_img
     */

     /**
     * Function name : resize_imagepng
     * Description   : This function is to resize png image 
     * @param          : $file variable is the original image 
     * @param          : $w variable is the width of image 
     * @param          : $f variable is the height of image 
     */
    private function resize_imagepng($file, $w, $h) {
       list($width, $height) = getimagesize($file);
       $src = imagecreatefrompng($file);
       $dst = imagecreatetruecolor($w, $h);
       imagecopyresampled($dst, $src, 0, 0, 0, 0, $w, $h, $width, $height);
       return $dst;
    }
     /**
     * End function name : resize_imagepng
     */

     /**
     * Function name : resize_imagejpeg
     * Description   : This function is to resize jpeg image 
     * @param          : $file variable is the original image 
     * @param          : $w variable is the width of image 
     * @param          : $f variable is the height of image 
     */
    private function resize_imagejpeg($file, $w, $h) {
       list($width, $height) = getimagesize($file);
       $src = imagecreatefromjpeg($file);
       $dst = imagecreatetruecolor($w, $h);
       imagecopyresampled($dst, $src, 0, 0, 0, 0, $w, $h, $width, $height);
       return $dst;
    }
     /**
     * End function name : resize_imagejpeg
     */

     /**
     * Function name : resize_imagegif
     * Description   : This function is to resize gif image 
     * @param          : $file variable is the original image 
     * @param          : $w variable is the width of image 
     * @param          : $f variable is the height of image 
     */
    private function resize_imagegif($file, $w, $h) {
       list($width, $height) = getimagesize($file);
       $src = imagecreatefromgif($file);
       $dst = imagecreatetruecolor($w, $h);
       imagecopyresampled($dst, $src, 0, 0, 0, 0, $w, $h, $width, $height);
       return $dst;
    }
     /**
     * End function name : resize_imagegif
     */
}
/**
* End class name : resizeImage
*/
?>
ingo на jache точка de
пред 14 години
I know this might look somewhat superfluous to others, but i once came across a situation where i needed a *strong* blur on an image without having ImageMagick installed. Executing the convolution-filter several times on the same image is awfully slow and still doesn't give a good blur.

The function below accepts a truecolor-image and a blur-factor between 0.0 and 1.0. Beware: It's still quite slow.

<?php

    function blurImage($srcimg,$blur)
    {
        $blur = $blur*$blur;
        $blur = max(0,min(1,$blur));
    
        $srcw = imagesx($srcimg);
        $srch = imagesy($srcimg);
        
        $dstimg = imagecreatetruecolor($srcw,$srch);
    
        $f1a = $blur;
        $f1b = 1.0 - $blur;

    
        $cr = 0; $cg = 0; $cb = 0;
        $nr = 0; $ng = 0; $nb = 0;

        $rgb = imagecolorat($srcimg,0,0);
        $or = ($rgb >> 16) & 0xFF;
        $og = ($rgb >> 8) & 0xFF;
        $ob = ($rgb) & 0xFF;

        //-------------------------------------------------
        // first line is a special case
        //-------------------------------------------------
        $x = $srcw;
        $y = $srch-1;
        while ($x--)
        {
            //horizontal blurren
            $rgb = imagecolorat($srcimg,$x,$y);
            $cr = ($rgb >> 16) & 0xFF;
            $cg = ($rgb >> 8) & 0xFF;
            $cb = ($rgb) & 0xFF;
    
            $nr = ($cr * $f1a) + ($or * $f1b);
            $ng = ($cg * $f1a) + ($og * $f1b);
            $nb = ($cb * $f1a) + ($ob * $f1b);    

            $or = $nr;
            $og = $ng;
            $ob = $nb;
            
            imagesetpixel($dstimg,$x,$y,($nr << 16) | ($ng << 8) | ($nb));
        }
        //-------------------------------------------------

        //-------------------------------------------------
        // now process the entire picture
        //-------------------------------------------------
        $y = $srch-1;
        while ($y--)
        {

            $rgb = imagecolorat($srcimg,0,$y);
            $or = ($rgb >> 16) & 0xFF;
            $og = ($rgb >> 8) & 0xFF;
            $ob = ($rgb) & 0xFF;

            $x = $srcw;
            while ($x--)
            {
                //horizontal 
                $rgb = imagecolorat($srcimg,$x,$y);
                $cr = ($rgb >> 16) & 0xFF;
                $cg = ($rgb >> 8) & 0xFF;
                $cb = ($rgb) & 0xFF;
                
                $nr = ($cr * $f1a) + ($or * $f1b);
                $ng = ($cg * $f1a) + ($og * $f1b);
                $nb = ($cb * $f1a) + ($ob * $f1b);    
    
                $or = $nr;
                $og = $ng;
                $ob = $nb;
                
                
                //vertical 
                $rgb = imagecolorat($dstimg,$x,$y+1);
                $vr = ($rgb >> 16) & 0xFF;
                $vg = ($rgb >> 8) & 0xFF;
                $vb = ($rgb) & 0xFF;
                
                $nr = ($nr * $f1a) + ($vr * $f1b);
                $ng = ($ng * $f1a) + ($vg * $f1b);
                $nb = ($nb * $f1a) + ($vb * $f1b);    
    
                $vr = $nr;
                $vg = $ng;
                $vb = $nb;
                
                imagesetpixel($dstimg,$x,$y,($nr << 16) | ($ng << 8) | ($nb));
            }
        
        }
        //-------------------------------------------------
        return $dstimg;        

    }

    
    $srcimg = imagecreatefromjpeg("test.jpg");
    $dstimg = blurImage($srcimg,0.2);

    header('Content-type: image/jpeg');
    echo( imagejpeg($dstimg) );
    exit();
    
    
?>
jeff на lushmedia точка com
пред 22 години
I wrote an online overview of the image functions that people might find useful. In addition to a general overview of the various function categories and code samples, I have included many interactive examples of the functions, allowing viewers to experiment with the parameters, and seeing the results in real time. The presentation is located at New York PHP
http://www.nyphp.org/content/presentations/GDintro/
mpyw
пред 9 години
This is an example of black-and-white imagebmp() implementation. 

<?php

/**
 * Output a black-and-white BMP image to either the browser or a file.
 * 
 * @param resource $image
 *            An image resource, returned by one of the image creation functions,
 *            such as imagecreatetruecolor().
 *
 * @param string|null $to
 *            The path or an open stream resource
 *            (which is automatically being closed after this function returns)
 *            to save the file to.
 *            If not set or NULL, the raw image stream will be outputted directly.
 *
 * @param float $threshold
 *            The number in the range of 0.0 to 1.0.
 *            Brighter for larger, or darker for smaller.
 *
 * @return bool Returns TRUE on success or FALSE on failure.
 * 
 */
function imagebwbmp($image, $to = null, $threshold = 0.5)
{
    if (func_num_args() < 1) {
        $fmt = "imagebwbmp() expects a least 1 parameters, %d given";
        trigger_error(sprintf($fmt, func_num_args()), E_USER_WARNING);
        return;
    }
    if (!is_resource($image)) {
        $fmt = "imagebwbmp() expects parameter 1 to be resource, %s given";
        trigger_error(sprintf($fmt, gettype($image)), E_USER_WARNING);
        return;
    }
    if (!is_numeric($threshold)) {
        $fmt = "imagebwbmp() expects parameter 3 to be float, %s given";
        trigger_error(sprintf($fmt, gettype($threshold)), E_USER_WARNING);
        return;
    }

    if (get_resource_type($image) !== 'gd') {
        $msg = "imagebwbmp(): supplied resource is not a valid gd resource";
        trigger_error($msg, E_USER_WARNING);
        return false;
    }
    switch (true) {
        case $to === null:
            break;
        case is_resource($to) && get_resource_type($to) === 'stream':
        case is_string($to) && $to = fopen($to, 'wb'):
            if (preg_match('/[waxc+]/', stream_get_meta_data($to)['mode'])) {
                break;
            }
        default:
            $msg = "imagebwbmp(): Invalid 2nd parameter, it must a writable filename or a writable stream";
            trigger_error($msg, E_USER_WARNING);
            return false;
    }

    if ($to === null) {
        $to = fopen('php://output', 'wb');
    }

    $biWidth = imagesx($image);
    $biHeight = imagesy($image);
    $biSizeImage = ((int)ceil($biWidth / 32) * 32 / 8 * $biHeight);
    $bfOffBits = 54 + 4 * 2; // Use two colors (black and white)
    $bfSize = $bfOffBits + $biSizeImage;
    
    fwrite($to, 'BM');
    fwrite($to, pack('VvvV', $bfSize, 0, 0, $bfOffBits));
    fwrite($to, pack('VVVvvVVVVVV', 40, $biWidth, $biHeight, 1, 1, 0, $biSizeImage, 0, 0, 0, 0));
    fwrite($to, "\xff\xff\xff\x00"); // white
    fwrite($to, "\x00\x00\x00\x00"); // black
    
    for ($y = $biHeight - 1; $y >= 0; --$y) {
        $byte = 0;
        for ($x = 0; $x < $biWidth; ++$x) {
            $rgb = imagecolorsforindex($image, imagecolorat($image, $x, $y));
            $value = (0.299 * $rgb['red'] + 0.587 * $rgb['green'] + 0.114 * $rgb['blue']) / 0xff;
            $color = (int)($value > $threshold);
            $byte = ($byte << 1) | $color;
            if ($x % 8 === 7) {
                fwrite($to, pack('C', $byte));
                $byte = 0;
            }
        }
        if ($x % 8) {
            fwrite($to, pack('C', $byte << (8 - $x % 8)));
        }
        if ($x % 32) {
            fwrite($to, str_repeat("\x00", (int)((32 - $x % 32) / 8)));
        }
    }

    return true;
}
?>
На оваа страница

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

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

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

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

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