Skip to main content
Email Password   helpLost your password?

Online demo.

(Hit F5 to see a new 'randomized' GIF generated!)

Introduction

This wrapper was developed by Trevor Herselman. GD is copyright 2005 Boutell.com, Inc. GD was developed by Thomas Boutell.

Files:

VB Source Code

ASP Examples

What is GD Library?

Edited quote from www.boutell.com:

"GD is an open source code library for the dynamic creation of images by programmers. GD creates PNG, JPEG and GIF images, and is commonly used to generate charts, graphics, thumbnails, graphs, text and almost anything on the fly."

FAQ

Why another wrapper?

Actually, it's the first of its kind and the only wrapper available for ASP developers. GD comes standard (built-in) with PHP 4.3.x.

Why use GD?

GD is a very mature and stable project. It's unbelievably fast and easy to use! PHP developers can easily see the similarities and ASP developers will have a smoother transition to PHP by using similar code! Take advantage of tutorials written for PHP with only syntax differences!

Why use this wrapper?

An image can be created/loaded, drawn on, saved to file or sent to a browser in less than 5 lines of code! There are several advantages ASP developers have, such as being able to read/write directly to BLOB or Image types in SQL. This wrapper creates an ADODB.Stream (ADO 2.8) object for internal use and is fully available to the client (object.Stream) with all the features and functionality that the Stream object brings!

What can GD do?

What else can the wrapper do?

Gradient fills (horizontal and vertical), load/save from/to a file, memory or database (using ADO 2.8 Stream object). Output dynamic image directly to client.

Current wrapper limitations?

To draw various fonts, GD uses FreeType library, I'm having problems with the function declarations. I have problems with the declaration of the variable length polygon drawing functions.

Example 1

Create a 500x500 PNG image and draw a blue rectangle.

PHP

<?php
    // Create a blank 500x500 pixel image. 

    $im = imagecreate(500, 500);
    // Allocate $white to the white color in $im. 

    $white = imagecolorallocate($im, 255, 255, 255);
    // Allocate $blue to the blue color in $im. 

    $blue = imagecolorallocate($im, 0, 0, 255);
    // Create a rectangle starting at (3, 15), the upper

    // left corner, that goes down to (390, 440),

    // the lower right corner. 

    imagerectangle($im, 3, 15, 390, 440);
    // Send the PNG content type header

    // so the browser knows what it's getting. 

    header('Content-Type: image/png');
    // Output the image to the browser.

    imagepng($im);
?>

ASP (JavaScript)

<%
    var gdImage = Server.CreateObject("GDLibrary.gdImage");
    gdImage.Create(500, 500);
    gdImage.ColorAllocate(255, 255, 255);
    var Blue = gdImage.ColorAllocate(0, 0, 255);
    gdImage.Rectangle(3, 15, 390, 440, Blue);
    Response.ContentType = "image/png";
    Response.BinaryWrite(gdImage.ToPngStream().Read);
%>

Example 2

Create a 230x20 image and write "My first Program with GD".

PHP

<?php
    header ("Content-type: image/png"); 
    $img_handle = ImageCreate (230, 20) or die ("Cannot Create image"); 
    $back_color = ImageColorAllocate ($img_handle, 0, 10, 10); 
    $txt_color = ImageColorAllocate ($img_handle, 233, 114, 191); 
    ImageString ($img_handle, 31, 5, 5,  
                 "My first Program with GD", $txt_color); 
    ImagePng ($img_handle); 
?>

ASP (JavaScript)

<%
    Response.ContentType = "image/png";
    var gdImage = Server.CreateObject("GDLibrary.gdImage");
    gdImage.Create(230, 20);
    gdImage.ColorAllocate(0, 10, 10);
    var TextColor = gdImage.ColorAllocate(233, 114, 191);
    gdImage.Chars(gdImage.FontGetLarge(), 5, 5, 
                 "My first Program with GD", TextColor);
    Response.BinaryWrite(gdImage.ToPngStream().Read);
%>

Example 3

Draw lines 10 pixels apart in a for loop.

PHP

<?php 
    Header("Content-type: image/png"); 
    $height = 300; 
    $width = 300; 
    $im = ImageCreate($width, $height); 
    $bck = ImageColorAllocate($im, 10,110,100); 
    $white = ImageColorAllocate($im, 255, 255, 255); 
    ImageLine($im, 0, 0, $width, $height, $white); 
    for($i=0;$i<=299;$i=$i+10) { 
    ImageLine($im, 0, $i, $width, $height, $white); }     
    ImagePNG($im); 
?>

ASP (JavaScript)

<%
    Response.ContentType = "image/png";
    var height = 300;
    var width = 300;
    var gdImage = Server.CreateObject("GDLibrary.gdImage");
    gdImage.Create(width, height);
    gdImage.ColorAllocate(10, 110, 100);
    var white = gdImage.ColorAllocate(255, 255, 255);
    gdImage.Line(0, 0, width, height, white);
    for (var i = 0; i < width; i += 10)
        gdImage.Line(0, i, width, height, white);
    Response.BinaryWrite(gdImage.ToPngStream().Read);
%>

Example 4

Draw an ellipse (oval)

PHP

<?php 
    Header("Content-type: image/png"); 
    $height = 300; 
    $width = 300; 
    $im = ImageCreate($width, $height); 
    $bck = ImageColorAllocate($im, 10,110,100); 
    $white = ImageColorAllocate($im, 255, 255, 255); 
    imageellipse ($im, 150, 150, 100, 200, $white); 
    ImagePNG($im); 
?>

ASP (JavaScript)

<%
    Response.ContentType = "image/png";
    var height = 300;
    var width = 300;
    var gdImage = Server.CreateObject("GDLibrary.gdImage");
    gdImage.Create(width, height);
    gdImage.ColorAllocate(10, 110, 100);
    var white = gdImage.ColorAllocate(255, 255, 255);
    gdImage.Ellipse(150, 150, 100, 200, white);
    Response.BinaryWrite(gdImage.ToPngStream().Read);
%>

Example 5

Load a PNG from file, if the file is not found, create a new image with the message "Image Not Found".

PHP

<? 
    header ("Content-type: image/png"); 
    $im = @ImageCreateFromPNG ("php.png"); 
    if(!$im) { 
        $img_handle = ImageCreate (200, 20) or die ("Cannot Create image"); 
        $back_color = ImageColorAllocate ($img_handle, 0, 0, 0); 
        $txt_color = ImageColorAllocate ($img_handle, 255, 255, 255); 
        ImageString ($img_handle, 10, 25, 5,  "Image Not Found", $txt_color); 
        ImagePng ($img_handle); } 
    Else { 
        echo "Image is Found"; } 
?>

ASP (JavaScript)

<%
    Response.ContentType = "image/png";
    var gdImage = Server.CreateObject("GDLibrary.gdImage");
    if (!gdImage.LoadFromFile(Server.MapPath("dynamicpng.png"))) {
        gdImage.Create(200, 20);
        gdImage.ColorAllocate(0, 0, 0);
        var TextColor = gdImage.ColorAllocate(255, 255, 255);
        gdImage.Chars(gdImage.FontGetMediumBold(), 25, 5, 
                              "Image Not Found", TextColor);
        Response.BinaryWrite(gdImage.ToPngStream().Read); }
    else {
        Response.Write("Image is Found"); }
%>

This wrapper was developed by Trevor Herselman. GD is copyright 2005 Boutell.com, Inc. GD was developed by Thomas Boutell.

You must Sign In to use this message board.
 
 
Per page   
 FirstPrevNext
Generalnew function resize e resample Pin
giaza
8:28 8 Oct '09  
GeneralHi Dade Pin
DaKhucBuon
0:15 20 Jul '09  
Generalresize image and use jpg Pin
Atlantis78
12:08 8 Apr '07  
GeneralTransparency, how do you do it? Pin
wvankuyk
9:51 18 Dec '06  
GeneralHow to set this up? Pin
sp@k
11:50 3 Nov '06  
QuestionFonts Pin
jigas
5:05 13 Sep '06  
GeneralDetecting how many frames in GIF animation Pin
rbalboa
8:12 11 Sep '06  
Questiongdwrapper - Write file to disk Pin
jkirkerx
12:18 4 Jun '06  
GeneralFile not found Pin
kenzoj
3:19 18 Apr '06  
GeneralRe: File not found Pin
petapetes
6:03 3 May '06  
GeneralRe: File not found Pin
JohnSmith3kk48du
12:33 23 Sep '06  
GeneralImageresizing Pin
xayide
23:28 12 Apr '06  
GeneralTTF(FT) not support,not support for chinese etc Pin
jiangjiayun
18:17 5 Sep '05  
GeneralAnother gd wrapper (VBScript) Pin
Lutz Tautenhahn
11:12 9 Jun '05  
GeneralRe: Another gd wrapper (VBScript) Pin
Dade Murphy
21:07 9 Jun '05  
GeneralASP Captcha Pin
CSShyamSundar
22:17 3 Jun '05  
GeneralCannot work Pin
donno20
21:46 28 May '05  
GeneralRe: Cannot work Pin
Dade Murphy
21:11 29 May '05  
Generalgreat work! Pin
frumbert
14:15 24 May '05  


Last Updated 18 May 2005 | Advertise | Privacy | Terms of Use | Copyright © CodeProject, 1999-2009