PHP 5.6.4 is available

GD および Image 関数

目次

  • gd_info — 現在インストールされているGDライブラリに関する情報を取得する
  • getimagesize — 画像の大きさを取得する
  • getimagesizefromstring — 画像の大きさを文字列から取得する
  • image_type_to_extension — 画像形式からファイルの拡張子を取得する
  • image_type_to_mime_type — getimagesize, exif_read_data, exif_thumbnail, exif_imagetypeから返される 画像形式のMIMEタイプを取得する
  • image2wbmp — 画像をブラウザあるいはファイルに出力する
  • imageaffine — 元の画像を、オプションのクリッピング領域を使ってアフィン変換した画像を返す
  • imageaffinematrixconcat — 二つの行列を連結する (複数の操作を一度に行う)
  • imageaffinematrixget — 元の画像を、オプションのクリッピング領域を使ってアフィン変換した画像を返す
  • imagealphablending — イメージのブレンドモードを設定する
  • imageantialias — アンチエイリアス機能を使用すべきかどうかを判断する
  • imagearc — 部分楕円を描画する
  • imagechar — 水平に文字を描画する
  • imagecharup — 垂直に文字を描画する
  • imagecolorallocate — 画像で使用する色を作成する
  • imagecolorallocatealpha — 画像で使用する色を透過度を指定して作成する
  • imagecolorat — ピクセルの色のインデックスを取得する
  • imagecolorclosest — 指定した色に最も近い色のインデックスを取得する
  • imagecolorclosestalpha — 指定した色+アルファ値に最も近い色のインデックスを取得する
  • imagecolorclosesthwb — 色合い、白、黒を有する色のインデックスを得る
  • imagecolordeallocate — イメージの色リソースを開放する
  • imagecolorexact — 指定した色のインデックスを取得する
  • imagecolorexactalpha — 指定した色+アルファ値のインデックスを取得する
  • imagecolormatch — パレットイメージの色を True カラーイメージに近づける
  • imagecolorresolve — 指定した色または出来るだけ近い色のインデックスを得る
  • imagecolorresolvealpha — 指定した色+アルファ値または最も近い色のインデックスを取得する
  • imagecolorset — 指定したパレットインデックスの色を設定する
  • imagecolorsforindex — カラーインデックスからカラーを取得する
  • imagecolorstotal — 画像パレットの色数を検出する
  • imagecolortransparent — 透明色を定義する
  • imageconvolution — div および offset の係数を使用し、3x3 の畳み込み配列を適用する
  • 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 — TrueColor イメージを新規に作成する
  • imagecrop — 座標とサイズを指定して、画像をクロップする
  • imagecropauto — 利用可能なモードを指定して、画像を自動的にクロップする
  • imagedashedline — 破線を描画する
  • imagedestroy — 画像を破棄する
  • imageellipse — 楕円を描画する
  • imagefill — 塗り潰す
  • imagefilledarc — 楕円弧を描画し、塗りつぶす
  • imagefilledellipse — 塗りつぶされた楕円を描画する
  • imagefilledpolygon — 塗りつぶした多角形を描画する
  • imagefilledrectangle — 塗りつぶした矩形を描画する
  • imagefilltoborder — 特定色で塗りつぶす
  • imagefilter — 画像にフィルタを適用する
  • imageflip — 指定したモードで画像を反転させる
  • imagefontheight — フォントの高さを取得する
  • imagefontwidth — フォントの幅を取得する
  • imageftbbox — freetype2 によるフォントを用いたテキストを囲む箱を取得する
  • imagefttext — FreeType 2 によるフォントを用いてイメージにテキストを描画する
  • imagegammacorrect — GD イメージにガンマ補正を適用する
  • imagegd2 — GD2 イメージをブラウザまたはファイルに出力する
  • imagegd — GD イメージをブラウザまたはファイルに出力する
  • imagegif — 画像をブラウザあるいはファイルに出力する
  • imagegrabscreen — 画面全体をキャプチャする
  • imagegrabwindow — ウィンドウをキャプチャする
  • imageinterlace — インターレースを有効もしくは無効にする
  • imageistruecolor — 画像が truecolor かどうか調べる
  • imagejpeg — 画像をブラウザあるいはファイルに出力する
  • imagelayereffect — アルファブレンディングフラグを設定し、 libgd にバンドルされているレイヤ効果を使用する
  • imageline — 直線を描画する
  • imageloadfont — 新しいフォントを読み込む
  • imagepalettecopy — あるイメージから他のイメージにパレットをコピーする
  • imagepalettetotruecolor — パレット形式の画像を true color に変換する
  • imagepng — PNG イメージをブラウザまたはファイルに出力する
  • imagepolygon — 多角形を描画する
  • imagepsbbox — PostScript Type1 フォントを用いてテキスト矩形のバウンディングボックスを指定する
  • imagepsencodefont — フォントの文字エンコードベクトルを変更する
  • imagepsextendfont — フォントを展開または圧縮する
  • imagepsfreefont — PostScript Type 1 フォント用メモリを解放する
  • imagepsloadfont — ファイルから PostScript Type 1 フォントをロードする
  • imagepsslantfont — フォントを傾ける
  • imagepstext — PostScript Type1 フォントを用いて画像の上に文字列を描く
  • imagerectangle — 矩形を描画する
  • imagerotate — 指定された角度で画像を回転する
  • imagesavealpha — PNG 画像を保存する際に(単一色の透過設定ではない)完全な アルファチャネル情報を保存するフラグを設定する
  • imagescale — 幅と高さを指定して、画像の縮尺を変更する
  • imagesetbrush — 線の描画用にブラシイメージを設定する
  • imagesetinterpolation — 補間方法を設定する
  • imagesetpixel — 点を生成する
  • imagesetstyle — 線描画用のスタイルを設定する
  • imagesetthickness — 線描画用の線幅を設定する
  • imagesettile — 塗りつぶし用のイメージを設定する
  • imagestring — 文字列を水平に描画する
  • imagestringup — 文字列を垂直に描画する
  • imagesx — 画像の幅を取得する
  • imagesy — 画像の高さを取得する
  • imagetruecolortopalette — TrueColor イメージをパレットイメージに変換する
  • imagettfbbox — TypeType フォントを使用したテキストの bounding box を生成する
  • imagettftext — TrueType フォントを使用してテキストを画像に書き込む
  • imagetypes — この PHP がサポートしている画像形式を返す
  • imagewbmp — 画像をブラウザあるいはファイルに出力する
  • imagewebp — WebP 画像をブラウザあるいはファイルに出力する
  • imagexbm — XBM 画像をブラウザあるいはファイルに出力する
  • iptcembed — バイナリ IPTC データを JPEG イメージに埋めこむ
  • iptcparse — バイナリの IPTC ブロックのタグをパースする
  • jpeg2wbmp — JPEG イメージファイルから WBMP イメージファイルに変換する
  • png2wbmp — PNG イメージファイルから WBMP イメージファイルに変換する
add a note add a note

User Contributed Notes 12 notes

up
7
michal-ok at o2 dot pl
9 years ago
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.
up
5
felipensp at gmail dot com
8 years ago
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 )

?>
up
4
chuckstudios at gmail dot com
6 years ago
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;
        }
    }
?>
up
4
shd at earthling dot net
8 years ago
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).
up
3
dev at kingthief dot com
6 years ago
I've developed a well-documented, fairly rock-solid API for creating on the fly, anti-aliased, rounded corner images, including full alpha transparency support for all you PNG lovers.

go here to download the package:
http://sourceforge.net/projects/roundedphp/

go here for a live demo:
http://dev.kingthief.com/demos/roundedphp/

Installation is similar to PEAR.

Enjoy!
up
3
peter dot hulstaert at gmail dot com
8 years ago
While I was searching for a good way to draw a graph, I stumbled on skumar2k15's script.

I have taken the liberty to improve multiple aspects of it.

1. The array can grow and shrink in size, the graph will adjust accordingly.
2. All the values in the array are recalculated so they won't get bigger than the height of the graph.
3. I inserted the possibility to keep a percentage off the height away from the edge.
4. You can adjust the size of the grid.
5. Everything will adjust when you change the height of width.

<?
header("Content-type: image/png");

// Define variables
$Values=array(50,90,30,155,50,40,320,50,40,86,240,128,650,540,320);
$imgWidth=500;
$imgHeight=200;
$grid=25;
$graphspacing=0.05;

//Creation of new array with hight adjusted values
while (list($key, $val) = each($Values))
    {if($val>$max){$max=$val;}}

for ($i=0; $i<count($Values); $i++){
$graphValues[$i] = $Values[$i] * (($imgHeight*(1-$graphspacing))/$max);
}
// Create image and define colors

$image=imagecreate($imgWidth, $imgHeight);
$colorWhite=imagecolorallocate($image, 255, 255, 255);
$colorGrey=imagecolorallocate($image, 192, 192, 192);
$colorBlue=imagecolorallocate($image, 0, 0, 255);

// Create border around image
imageline($image, 0, 0, 0, $imgHeight, $colorGrey);
imageline($image, 0, 0, $imgWidth, 0, $colorGrey);
imageline($image, $imgWidth-1, 0, $imgWidth-1, $imgHeight-1, $colorGrey);
imageline($image, 0, $imgHeight-1, $imgWidth-1, $imgHeight-1, $colorGrey);

// Create grid
for ($i=1; $i<($imgWidth/$grid); $i++)
    {imageline($image, $i*$grid, 0, $i*$grid, $imgHeight, $colorGrey);}
for ($i=1; $i<($imgHeight/$grid); $i++)
    {imageline($image, 0, $i*$grid, $imgWidth, $i*$grid, $colorGrey);}

// Create line graph
if($imgWidth/$grid>count($graphValues)){$space=$grid;}
else{$space = $imgWidth/(count($graphValues)-1);}

for ($i=0; $i<count($graphValues)-1; $i++)
    {imageline($image, $i*$space, ($imgHeight-$graphValues[$i]), ($i+1)*$space, ($imgHeight-$graphValues[$i+1]), $colorBlue);}

// Output graph and clear image from memory
imagepng($image);
imagedestroy($image);
?>
up
3
mslemko
9 years ago
For fedora core 4 users that find that the gd library isn't installed, you can issue the command (as root)

# yum install php-gd

it should download and install the gd library. You will need to restart apache... phpinfo() should then tell you "GD Support     enabled".
up
3
timeshifting at gmail dot com
9 years ago
To sharpen an image, rather than using the code below that produces a sharpening filter with php, use the built-in GD function "imageconvolution" which is designed for this purpose. Matrices can be used for sharpening, blurring, edge detection, etc, ala Photoshop.

A sharpening example:

<?php

$sharpenMatrix
= array(-1,-1,-1,-1,16,-1,-1,-1,-1);
$divisor = 8;
$offset = 0;

imageconvolution($myImage, $sharpenMatrix, $divisor, $offset);

?>

Below is some information on building different kinds of matrices. (If you have photoshop (or PSP, GIMP) you can test out your matrices before applying them in PHP)

http://loriweb.pair.com/8udf-basics.html (covers blurs)
http://loriweb.pair.com/8udf-sharpen.html
http://loriweb.pair.com/8udf-edges.html
http://loriweb.pair.com/8udf-emboss.html
up
2
ingo at jache dot de
3 years ago
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();
   
   
?>
up
2
jeff at lushmedia dot com
11 years ago
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/
up
2
ph_corp at yahoo dot fr
6 years ago
<?php

/**
HSL/RGB conversion functions
very useful for a lot of applications
**/

function RBGtoHSL ( $R, $G, $B )
{

   
$var_R = ( $R / 255 );
   
$var_G = ( $G / 255 );
   
$var_B = ( $B / 255 );

   
$var_Min = min( $var_R, $var_G, $var_B )
   
$var_Max = max( $var_R, $var_G, $var_B )
   
$del_Max = $var_Max - $var_Min

    $L
= ( $var_Max + $var_Min ) / 2;

    if (
$del_Max == 0 )
    {
      
$H = 0
       $S
= 0
   
}
    else
    {
        if (
$L < 0.5 )
        {
           
$S = $del_Max / ( $var_Max + $var_Min );
        }
        else
        {
           
$S = $del_Max / ( 2 - $var_Max - $var_Min );
        }

       
$del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
       
$del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
       
$del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;

        if (
$var_R == $var_Max )
        {
           
$H = $del_B - $del_G;
        }
        else if (
$var_G == $var_Max )
        {
           
$H = ( 1 / 3 ) + $del_R - $del_B;
        }
        else if (
$var_B == $var_Max )
        {
           
$H = ( 2 / 3 ) + $del_G - $del_R;
        }

        if (
$H < 0 )
        {
           
$H += 1;
        }
        if (
$H > 1 )
        {
           
$H -= 1
       
}

    }

    return array(
$H, $S, $L );

}

function
HuetoRGB( $v1, $v2, $vH )
{
    if (
$vH < 0 )
    {
       
$vH += 1;
    }
    if (
$vH > 1 )
    {
       
$vH -= 1;
    }
    if ( (
6 * $vH ) < 1 )
    {
        return (
$v1 + ( $v2 - $v1 ) * 6 * $vH );
    }
    if ( (
2 * $vH ) < 1 )
    {
        return (
$v2 );
    }
    if ( (
3 * $vH ) < 2 )
    {
        return (
$v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 );
    }
    return (
$v1 )
}

function
HSLtoRGB ( $H, $S, $L )
{

    if (
$S == 0 )
    {
       
$R = $L * 255;
       
$G = $L * 255;
       
$B = $L * 255;
    }
    else
    {
        if (
$L < 0.5 )
        {
           
$var_2 = $L * ( 1 + $S );
        }
        else
        {
           
$var_2 = ( $L + $S ) - ( $S * $L );
        }

       
$var_1 = 2 * $L - $var_2;

       
$R = 255 * HuetoRGB( $var_1, $var_2, $H + ( 1 / 3 ) );
       
$G = 255 * HuetoRGB( $var_1, $var_2, $H );
       
$B = 255 * HuetoRGB( $var_1, $var_2, $H - ( 1 / 3 ) );
    }

    return array(
$R, $G, $B );

}

function
distance ( $R1, $G1, $B1, $R2, $G2, $B2 )
{
   
$result = sqrt ( ( $R1 - $R2 )*( $R1 - $R2 ) + ( $G1 - $G2 )*( $G1 - $G2 ) + ( $B1 - $B2 )*( $B1 - $B2 ) );
    return (
$result );
}

?>
up
0
sellout at NoSpAm dot dharmadevil dot com
11 years ago
A fun little function to output UPC-A 11-digit barcodes.
Thanks to barcodeisland.com for the specs.

<?php

function UPCAbarcode($code) {
 
$lw = 2; $hi = 100;
 
$Lencode = array('0001101','0011001','0010011','0111101','0100011',
                  
'0110001','0101111','0111011','0110111','0001011');
 
$Rencode = array('1110010','1100110','1101100','1000010','1011100',
                  
'1001110','1010000','1000100','1001000','1110100');
 
$ends = '101'; $center = '01010';
 
/* UPC-A Must be 11 digits, we compute the checksum. */
 
if ( strlen($code) != 11 ) { die("UPC-A Must be 11 digits."); }
 
/* Compute the EAN-13 Checksum digit */
 
$ncode = '0'.$code;
 
$even = 0; $odd = 0;
  for (
$x=0;$x<12;$x++) {
    if (
$x % 2) { $odd += $ncode[$x]; } else { $even += $ncode[$x]; }
  }
 
$code.=(10 - (($odd * 3 + $even) % 10)) % 10;
 
/* Create the bar encoding using a binary string */
 
$bars=$ends;
 
$bars.=$Lencode[$code[0]];
  for(
$x=1;$x<6;$x++) {
   
$bars.=$Lencode[$code[$x]];
  }
 
$bars.=$center;
  for(
$x=6;$x<12;$x++) {
   
$bars.=$Rencode[$code[$x]];
  }
 
$bars.=$ends;
 
/* Generate the Barcode Image */
 
$img = ImageCreate($lw*95+30,$hi+30);
 
$fg = ImageColorAllocate($img, 0, 0, 0);
 
$bg = ImageColorAllocate($img, 255, 255, 255);
 
ImageFilledRectangle($img, 0, 0, $lw*95+30, $hi+30, $bg);
 
$shift=10;
  for (
$x=0;$x<strlen($bars);$x++) {
    if ((
$x<10) || ($x>=45 && $x<50) || ($x >=85)) { $sh=10; } else { $sh=0; }
    if (
$bars[$x] == '1') { $color = $fg; } else { $color = $bg; }
   
ImageFilledRectangle($img, ($x*$lw)+15,5,($x+1)*$lw+14,$hi+5+$sh,$color);
  }
 
/* Add the Human Readable Label */
 
ImageString($img,4,5,$hi-5,$code[0],$fg);
  for (
$x=0;$x<5;$x++) {
   
ImageString($img,5,$lw*(13+$x*6)+15,$hi+5,$code[$x+1],$fg);
   
ImageString($img,5,$lw*(53+$x*6)+15,$hi+5,$code[$x+6],$fg);
  }
 
ImageString($img,4,$lw*95+17,$hi-5,$code[11],$fg);
 
/* Output the Header and Content. */
 
header("Content-Type: image/png");
 
ImagePNG($img);
}

UPCAbarcode('12345678901');

?>
To Top