Hướng dẫn php-gd

Trong PHP, bạn có thể thao tác với các tệp hình ảnh bằng thư viện GD.

Nội dung chính

  • Tải xuống Thư viện LibJPEG
  • Cài đặt Thư viện LibJPEG
  • Tải xuống Thư viện FreeType
  • Cài đặt Thư viện FreeType
  • Cài đặt LibPNG
  • Biên dịch PHP
  • Xác minh GD được bật trong PHP

Nó hỗ trợ một số định dạng bao gồm GIF, PNG, JPEG, v.v. Bạn có thể sử dụng thư viện LibGD để truyền hình ảnh trực tiếp từ ứng dụng của mình lên trình duyệt.

Hướng dẫn này giải thích cách bật chức năng GD trong PHP.

  • Tải xuống Thư viện LibJPEG
  • Cài đặt Thư viện LibJPEG
  • Tải xuống Thư viện FreeType
  • Cài đặt Thư viện FreeType
  • Cài đặt LibPNG
  • Biên dịch PHP
  • Xác minh GD được bật trong PHP

Tải xuống Thư viện LibJPEG

Đầu tiên, tải xuống các tệp LibJPG từ nơi đây. Hoặc, bạn có thể sử dụng tiện ích bên dưới để tải xuống trực tiếp.

cd /usr/save
wget http://www.ijg.org/files/jpegsrc.v9.tar.gz

Cài đặt Thư viện LibJPEG

Sau khi bạn đã tải xuống, hãy giải nén kho lưu trữ và cài đặt nó như hình dưới đây.

tar xvfz jpegsrc.v9.tar.gz
cd jpeg-9
./configure
make
make install

Thao tác này sẽ cài đặt các thư viện jpeg ở vị trí mặc định / usr / local / lib / như hình dưới đây.

# ls /usr/local/lib/*jpeg*
/usr/local/lib/libjpeg.a
/usr/local/lib/libjpeg.la*
/usr/local/lib/libjpeg.so -> libjpeg.so.9.0.0*
/usr/local/lib/libjpeg.so.9 -> libjpeg.so.9.0.0*
/usr/local/lib/libjpeg.so.9.0.0*

Tải xuống Thư viện FreeType

Tải xuống thư viện freetype từ nơi đây. Hoặc, bạn có thể sử dụng tiện ích bên dưới để tải xuống trực tiếp.


cd /usr/save
wget http://iweb.dl.sourceforge.net/project/freetype/freetype2/2.5.0/freetype-2.5.0.1.tar.bz2

Cài đặt Thư viện FreeType

Sau khi bạn đã tải xuống, hãy giải nén kho lưu trữ và cài đặt nó như hình dưới đây.

tar xvfj freetype-2.5.0.1.tar.bz2
cd freetype-2.5.0.1/
./configure --without-png
make
make install

Trong khi cài đặt freetype, nếu bạn không chỉ định cờ không có-png cho ./configure như được hiển thị ở trên, bạn có thể gặp lỗi sau trong quá trình ./configure

/usr/include/libpng12/pngconf.h:336: error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
/usr/include/libpng12/pngconf.h:337: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'include'
make: *** [/usr/src/freetype-2.5.0.1/objs/sfnt.lo] Error 1

Cài đặt LibPNG

Đối với hầu hết các phần, hệ thống của bạn có thể đã được cài đặt các thư viện LibPNG như hình dưới đây.

# rpm -qa | egrep 'jpg|png'
libpng-devel-1.2.10-7.1.el5_0.1
libpng-1.2.10-7.1.el5_0.1

Tuy nhiên, nếu bạn chưa có, hãy tải xuống và cài đặt LibPNG từ nơi đây.

Biên dịch PHP

Bây giờ, hãy tải xuống và cài đặt PHP từ nguồn như chúng tôi đã giải thích trước đó. Tuy nhiên, lần này, hãy đảm bảo chuyển các tham số sau vào ./configure trong cài đặt PHP của bạn.

./configure  
     --with-apxs2=/usr/local/apache2/bin/apxs  
     --with-mysql 
     --with-gd 
     --with-jpeg-dir 
     --enable-gd-native-ttf 
     --with-freetype-dir 
make
make install

Xác minh GD được bật trong PHP

Bây giờ, hãy tạo một trang php thử nghiệm với phpinfo () và xem nó từ trình duyệt. Như bạn thấy bên dưới, bạn sẽ nhận thấy rằng nó đã bật LibGD và các thư viện liên quan.

Trong PHP, bạn có thể thao tác với các tệp hình ảnh bằng thư viện GD.

Nội dung chính

  • Tải xuống Thư viện LibJPEG
  • Cài đặt Thư viện LibJPEG
  • Tải xuống Thư viện FreeType
  • Cài đặt Thư viện FreeType
  • Cài đặt LibPNG
  • Biên dịch PHP
  • Xác minh GD được bật trong PHP
  • Thêm một hình vào một hình trong PHP
  • Thêm một text vào một hình trong PHP
  • Sử dụng thư viện PHP Image Workshop 
  • 1 - Adding a text watermark
  • 2 - Adding an image watermark
  • 3 - Adding some opacity to the watermark
  • 4 - Adding a vertical watermark

Nội dung chính

  • Tải xuống Thư viện LibJPEG
  • Cài đặt Thư viện LibJPEG
  • Tải xuống Thư viện FreeType
  • Cài đặt Thư viện FreeType
  • Cài đặt LibPNG
  • Biên dịch PHP
  • Xác minh GD được bật trong PHP

Nó hỗ trợ một số định dạng bao gồm GIF, PNG, JPEG, v.v. Bạn có thể sử dụng thư viện LibGD để truyền hình ảnh trực tiếp từ ứng dụng của mình lên trình duyệt.

Hướng dẫn này giải thích cách bật chức năng GD trong PHP.

  • Tải xuống Thư viện LibJPEG
  • Cài đặt Thư viện LibJPEG
  • Tải xuống Thư viện FreeType
  • Cài đặt Thư viện FreeType
  • Cài đặt LibPNG
  • Biên dịch PHP
  • Xác minh GD được bật trong PHP

Tải xuống Thư viện LibJPEG

Đầu tiên, tải xuống các tệp LibJPG từ nơi đây. Hoặc, bạn có thể sử dụng tiện ích bên dưới để tải xuống trực tiếp.

cd /usr/save
wget http://www.ijg.org/files/jpegsrc.v9.tar.gz

Cài đặt Thư viện LibJPEG

Sau khi bạn đã tải xuống, hãy giải nén kho lưu trữ và cài đặt nó như hình dưới đây.

tar xvfz jpegsrc.v9.tar.gz
cd jpeg-9
./configure
make
make install

Thao tác này sẽ cài đặt các thư viện jpeg ở vị trí mặc định / usr / local / lib / như hình dưới đây.

# ls /usr/local/lib/*jpeg*
/usr/local/lib/libjpeg.a
/usr/local/lib/libjpeg.la*
/usr/local/lib/libjpeg.so -> libjpeg.so.9.0.0*
/usr/local/lib/libjpeg.so.9 -> libjpeg.so.9.0.0*
/usr/local/lib/libjpeg.so.9.0.0*

Tải xuống Thư viện FreeType

Tải xuống thư viện freetype từ nơi đây. Hoặc, bạn có thể sử dụng tiện ích bên dưới để tải xuống trực tiếp.


cd /usr/save
wget http://iweb.dl.sourceforge.net/project/freetype/freetype2/2.5.0/freetype-2.5.0.1.tar.bz2

Cài đặt Thư viện FreeType

Sau khi bạn đã tải xuống, hãy giải nén kho lưu trữ và cài đặt nó như hình dưới đây.

tar xvfj freetype-2.5.0.1.tar.bz2
cd freetype-2.5.0.1/
./configure --without-png
make
make install

Trong khi cài đặt freetype, nếu bạn không chỉ định cờ không có-png cho ./configure như được hiển thị ở trên, bạn có thể gặp lỗi sau trong quá trình ./configure

/usr/include/libpng12/pngconf.h:336: error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
/usr/include/libpng12/pngconf.h:337: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'include'
make: *** [/usr/src/freetype-2.5.0.1/objs/sfnt.lo] Error 1

Cài đặt LibPNG

Đối với hầu hết các phần, hệ thống của bạn có thể đã được cài đặt các thư viện LibPNG như hình dưới đây.

# rpm -qa | egrep 'jpg|png'
libpng-devel-1.2.10-7.1.el5_0.1
libpng-1.2.10-7.1.el5_0.1

Tuy nhiên, nếu bạn chưa có, hãy tải xuống và cài đặt LibPNG từ nơi đây.

Biên dịch PHP

Bây giờ, hãy tải xuống và cài đặt PHP từ nguồn như chúng tôi đã giải thích trước đó. Tuy nhiên, lần này, hãy đảm bảo chuyển các tham số sau vào ./configure trong cài đặt PHP của bạn.

./configure  
     --with-apxs2=/usr/local/apache2/bin/apxs  
     --with-mysql 
     --with-gd 
     --with-jpeg-dir 
     --enable-gd-native-ttf 
     --with-freetype-dir 
make
make install

Xác minh GD được bật trong PHP

Bây giờ, hãy tạo một trang php thử nghiệm với phpinfo () và xem nó từ trình duyệt. Như bạn thấy bên dưới, bạn sẽ nhận thấy rằng nó đã bật LibGD và các thư viện liên quan.

Thêm Watermark là logo hoặc một đoạn text vào trong ảnh trong php bằng GD library trong PHP. Dưới đây là các ví dụ đơn giản và cả thư viện PHP viết sẵn 

Nội dung chính

  • Thêm một hình vào một hình trong PHP
  • Thêm một text vào một hình trong PHP
  • Sử dụng thư viện PHP Image Workshop 
  • 1 - Adding a text watermark
  • 2 - Adding an image watermark
  • 3 - Adding some opacity to the watermark
  • 4 - Adding a vertical watermark

Thêm một hình vào một hình trong PHP

<?php
    // load ảnh gốc và ảnh watermark
    $stamp = imagecreatefrompng('wartermark.png');
    $im = imagecreatefromjpeg('origin.jpeg');

    // set giá trị margin cho ảnh watermark
    $marge_right = 10;
    $marge_bottom = 10;
    $sx = imagesx($stamp);
    $sy = imagesy($stamp);

    // Chèn ảnh với vị trí đã set trên
    imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

    // hiển thị kết quả
    header('Content-type: image/png');
    imagepng($im);
    imagedestroy($im);
?>

Thêm một text vào một hình trong PHP

 <?php
    // get ảnh gốc
    $image = imagecreatefromjpeg('image.jpg');
    
    $textcolor = imagecolorallocate($image, 255, 255, 255);
    
    $font_file = 'myfont.ttf';
    
    $custom_text = "Watermark Text";
    
    imagettftext($image, 225, 0, 3450, 3000, $textcolor, $font_file, $custom_text);
    
    imagejpeg($image);
    
    imagedestroy($image); // for clearing memory


?>

Sử dụng thư viện PHP Image Workshop 

PHP Image Workshop là thư viện giúp bạn quản lý hình ảnh sử dụng GD library trong PHP

1 - Adding a text watermark

$norwayLayer = ImageWorkshop::initFromPath('/path/to/images/norway.jpg');
 
// This is the text layer
$textLayer = ImageWorkshop::initTextLayer('© PHP Image Workshop', '/path/to/fonts/arial.ttf', 11, 'ffffff', 0);
 
// We add the text layer 12px from the Left and 12px from the Bottom ("LB") of the norway layer:
$norwayLayer->addLayerOnTop($textLayer, 12, 12, "LB");
 
$image = $norwayLayer->getResult();
header('Content-type: image/jpeg');
imagejpeg($image, null, 95); // We chose to show a JPG with a quality of 95%
exit;

2 - Adding an image watermark

$norwayLayer = ImageWorkshop::initFromPath('/path/to/images/norway.jpg');
 
$watermarkLayer = ImageWorkshop::initFromPath('/path/to/images/watermark.png');
 
$norwayLayer->addLayer(1, $watermarkLayer, 12, 12, "LB");
 
$image = $norwayLayer->getResult();

3 - Adding some opacity to the watermark

// By reusing the previous snippet, you can set opacity to the watermark layer
// before to add it on the $norwayLayer
 
$watermarkLayer->opacity(40);

4 - Adding a vertical watermark

$norwayLayer = ImageWorkshop::initFromPath('/path/to/images/norway.jpg');
 
$watermarkLayer = ImageWorkshop::initFromPath('/path/to/images/watermark.png');
 
// We proceed to the $watermarkLayer rotation
$watermarkLayer->rotate(90);
 
$norwayLayer->addLayer(1, $watermarkLayer, 12, 12, "LB");
 
$image = $norwayLayer->getResult();

và còn nhiểu tính năng khác của thư viện, bạn có thể xem tại đây ImageWorkshop.