Hướng dẫn create image gd php - tạo hình ảnh gd php

I. Giới thiệu

Ngày nay, nhu cầu về sử dụng đồ hoạ đang bùng nổ rất mạnh mẽ, kéo theo sự phát triển không có điểm dừng của các thư viện đồ hoạ trong những năm gần đây. Tiêu biểu có thể kể đến OpenGL, DirectX,... Trong bài viết này mình xin giới thiệu một số hàm để thao tác, xử lý đồ hoạ trong ngôn ngữ lập trình PHP đó chính là GD.

GD Là gì?

GD được ra đời bởi Thomas Boutell, GD là một mã nguồn mở, được xây dựng từ ANSI C và có giao diện cho nhiều loại ngôn ngữ lập trình khác nhau, có thể kể đến như Perl, Python, PHP.... Các lập trình viên thường sử dụng thư viện này để hỗ trợ cho việc vẽ biểu đồ, đồ hoạ, hình ảnh, hoặc bất kỳ một thứ gì khác mà nó hỗ trợ.

SETUP

Hiện tại trên php version mới, đã support GD, Bạn cũng có thể kiểm tra nếu GD được cài đặt trên hệ thống của bạn bằng cách sử dụng function

<?php
header("Content-Type: image/png");
$im = @imagecreate(210, 100)
    or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
imagepng($im);
imagedestroy($im);
4.

Trường hợp server chưa được enable GD, bạn có thể setup theo hướng dẫn: To enable GD-support configure PHP

Hướng dẫn create image gd php - tạo hình ảnh gd php

II. Một số hàm thông dụng

imagecreate

Cú pháp

imagecreate ( int $width , int $height ) : resource
// Trong đó: $width và $height là kích thước hình cần tạo.

Hàm này hỗ trợ tạo nên một hình ảnh, chính xác hơn thì nó sẽ tạo ra một khung hình có kích thước, mà từ đó người dùng có thể thực hiện các thao tác khác tại đây. Bạn vui lòng xem các ví dụ bên dưới để hiểu rõ hơn.

<?php
header("Content-Type: image/png");
$im = @imagecreate(210, 100)
    or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
imagepng($im);
imagedestroy($im);

Demo

Hướng dẫn create image gd php - tạo hình ảnh gd php

imagecreatefrompng

Cú pháp:

imagecreatefrompng ( string $filename ) : resource

Bên cạnh việc tạo một typ jpg như trên, bạn cũng có thể tạo một khung ảnh để làm việc với một tấm hình PNG cho trước.

<?php
function LoadPNG($imgname)
{
    /* Attempt to open */
    $im = @imagecreatefrompng($imgname);

    /* See if it failed */
    if(!$im)
    {
        /* Create a blank image */
        $im  = imagecreatetruecolor(150, 30);
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc  = imagecolorallocate($im, 0, 0, 0);

        imagefilledrectangle($im, 0, 0, 150, 30, $bgc);

        /* Output an error message */
        imagestring($im, 1, 5, 5, 'Error loading ' . $imgname, $tc);
    }

    return $im;
}

header('Content-Type: image/png');

$img = LoadPNG('bogus.image');

imagepng($img);
imagedestroy($img);
?>

Hướng dẫn create image gd php - tạo hình ảnh gd php

Trong đó:

<?php
header("Content-Type: image/png");
$im = @imagecreate(210, 100)
    or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
imagepng($im);
imagedestroy($im);
5 là đường dẫn đến file hình ảnh cần khởi tạo.

Bạn cũng có thể thực hiện tương tự với một tấm hình JPEG với hàm

<?php
header("Content-Type: image/png");
$im = @imagecreate(210, 100)
    or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
imagepng($im);
imagedestroy($im);
6

imagepng và imagejpeg

Trong quá trình thực hiện các thao tác của bạn lên khung ảnh, chắc chắn rằng lúc nào đó bạn sẽ cần lưu lại các thao tác đó, hoặc hiển thị chúng ra ngoài. Thì khi đó

<?php
header("Content-Type: image/png");
$im = @imagecreate(210, 100)
    or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
imagepng($im);
imagedestroy($im);
7 và
<?php
header("Content-Type: image/png");
$im = @imagecreate(210, 100)
    or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
imagepng($im);
imagedestroy($im);
8 sẽ là 2 lựa chọn của bạn.

Cú Pháp:

imagepng ( resource $image [, mixed $to = NULL [, int $quality = -1 [, int $filters = -1 ]]] ) : bool

Trong đó:

  • <?php
    header("Content-Type: image/png");
    $im = @imagecreate(210, 100)
        or die("Cannot Initialize new GD image stream");
    $background_color = imagecolorallocate($im, 0, 0, 0);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
    imagepng($im);
    imagedestroy($im);
    
    9 là biến chứa đối tượng mà bạn đã thao tác lên đó.
  • <?php
    header("Content-Type: image/png");
    $im = @imagecreate(210, 100)
        or die("Cannot Initialize new GD image stream");
    $background_color = imagecolorallocate($im, 0, 0, 0);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
    imagepng($im);
    imagedestroy($im);
    
    5 là đường dẫn nơi bạn lưu trữ file. Nếu không có, hoặc đường dẫn không tồn tại, đối tượng sẽ được xuất ra.
  • imagecreatefrompng ( string $filename ) : resource
    
    1 là mức độ nén, có giá trị từ 0 đến 9.
  • imagecreatefrompng ( string $filename ) : resource
    
    2 là bộ lọc cho phép giảm kích thước của hình ảnh.

ex:

<?php
$im = imagecreatefrompng("test.png");

header('Content-Type: image/png');

imagepng($im);
imagedestroy($im);
?>

imagedestroy

Bên cạnh việc khởi tạo một hình ảnh thì GD cũng cung cấp cho người sử dụng cách để huỷ đối tượng đó ra khỏi vùng nhớ.

Cú pháp:

imagedestroy ( resource $image ) : bool

Ex:

<?php
// create a 100 x 100 image
$im = imagecreatetruecolor(100, 100);

// alter or save the image

// frees image from memory
imagedestroy($im);
?>

Bên cạnh việc tạo một typ jpg như trên, bạn cũng có thể tạo một khung ảnh để làm việc với một tấm hình PNG cho trước.

Cú pháp

imagecolorallocate ( resource $image , int $red , int $green , int $blue ) : int

Hàm này hỗ trợ tạo nên một hình ảnh, chính xác hơn thì nó sẽ tạo ra một khung hình có kích thước, mà từ đó người dùng có thể thực hiện các thao tác khác tại đây. Bạn vui lòng xem các ví dụ bên dưới để hiểu rõ hơn.

Trong đó:

  • <?php
    header("Content-Type: image/png");
    $im = @imagecreate(210, 100)
        or die("Cannot Initialize new GD image stream");
    $background_color = imagecolorallocate($im, 0, 0, 0);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
    imagepng($im);
    imagedestroy($im);
    
    9 là biến chứa đối tượng mà bạn đã thao tác lên đó.
  • <?php
    header("Content-Type: image/png");
    $im = @imagecreate(210, 100)
        or die("Cannot Initialize new GD image stream");
    $background_color = imagecolorallocate($im, 0, 0, 0);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
    imagepng($im);
    imagedestroy($im);
    
    5 là đường dẫn nơi bạn lưu trữ file. Nếu không có, hoặc đường dẫn không tồn tại, đối tượng sẽ được xuất ra.

Ex:

<?php

$im = imagecreate(100, 100);

// sets background to red
$background = imagecolorallocate($im, 255, 0, 0);

// sets some colors
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);

// hexadecimal way
$white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
$black = imagecolorallocate($im, 0x00, 0x00, 0x00);

?>

imagecreatefrompng ( string $filename ) : resource 1 là mức độ nén, có giá trị từ 0 đến 9.

Cú pháp:

<?php
header("Content-Type: image/png");
$im = @imagecreate(210, 100)
    or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
imagepng($im);
imagedestroy($im);
0

Bên cạnh việc tạo một typ jpg như trên, bạn cũng có thể tạo một khung ảnh để làm việc với một tấm hình PNG cho trước.

Trong đó:

  • <?php
    header("Content-Type: image/png");
    $im = @imagecreate(210, 100)
        or die("Cannot Initialize new GD image stream");
    $background_color = imagecolorallocate($im, 0, 0, 0);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
    imagepng($im);
    imagedestroy($im);
    
    9 là biến chứa đối tượng mà bạn đã thao tác lên đó.
  • <?php
    header("Content-Type: image/png");
    $im = @imagecreate(210, 100)
        or die("Cannot Initialize new GD image stream");
    $background_color = imagecolorallocate($im, 0, 0, 0);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
    imagepng($im);
    imagedestroy($im);
    
    5 là đường dẫn nơi bạn lưu trữ file. Nếu không có, hoặc đường dẫn không tồn tại, đối tượng sẽ được xuất ra.
  • imagecreatefrompng ( string $filename ) : resource
    
    1 là mức độ nén, có giá trị từ 0 đến 9.
  • imagecreatefrompng ( string $filename ) : resource
    
    2 là bộ lọc cho phép giảm kích thước của hình ảnh.
  • imagedestroy

Ex:

<?php
header("Content-Type: image/png");
$im = @imagecreate(210, 100)
    or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
imagepng($im);
imagedestroy($im);
1

Hướng dẫn create image gd php - tạo hình ảnh gd php

Bên cạnh việc khởi tạo một hình ảnh thì GD cũng cung cấp cho người sử dụng cách để huỷ đối tượng đó ra khỏi vùng nhớ.

imagecolorallocate

Cú pháp:

<?php
header("Content-Type: image/png");
$im = @imagecreate(210, 100)
    or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
imagepng($im);
imagedestroy($im);
2

Trong đó:

  • <?php
    header("Content-Type: image/png");
    $im = @imagecreate(210, 100)
        or die("Cannot Initialize new GD image stream");
    $background_color = imagecolorallocate($im, 0, 0, 0);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
    imagepng($im);
    imagedestroy($im);
    
    9 là biến chứa đối tượng mà bạn đã thao tác lên đó.
  • <?php
    header("Content-Type: image/png");
    $im = @imagecreate(210, 100)
        or die("Cannot Initialize new GD image stream");
    $background_color = imagecolorallocate($im, 0, 0, 0);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
    imagepng($im);
    imagedestroy($im);
    
    5 là đường dẫn nơi bạn lưu trữ file. Nếu không có, hoặc đường dẫn không tồn tại, đối tượng sẽ được xuất ra.
  • imagecreatefrompng ( string $filename ) : resource
    
    1 là mức độ nén, có giá trị từ 0 đến 9.
  • imagecreatefrompng ( string $filename ) : resource
    
    2 là bộ lọc cho phép giảm kích thước của hình ảnh.
  • imagedestroy
  • Bên cạnh việc khởi tạo một hình ảnh thì GD cũng cung cấp cho người sử dụng cách để huỷ đối tượng đó ra khỏi vùng nhớ.

Ex:

<?php
header("Content-Type: image/png");
$im = @imagecreate(210, 100)
    or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 10,25, 30,  "Framgia VietNam", $text_color);
imagepng($im);
imagedestroy($im);
3

imagecolorallocate