程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 利用php_imagick實現復古效果的方法

利用php_imagick實現復古效果的方法

編輯:PHP綜合

介紹

php_imagick是一個可以供PHP調用ImageMagick功能的PHP擴展,使用這個擴展可以使PHP具備和ImageMagick相同的功能。
ImageMagick是一套功能強大、穩定而且免費的工具集和開發包,可以用來讀、寫和處理超過185種基本格式 的圖片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。利用ImageMagick,你可以根據web應用程序的需要動態生成圖片, 還可以對一個(或一組)圖片進行改變大小、旋轉、銳化、減色或增加特效等操作,並將操作的結果以相同格式或其它格式保存。

php_imagick程序示例

1.創建一個縮略圖並顯示出來

<?php
header('Content-type: image/jpeg');
$image = new Imagick('image.jpg');
// If 0 is provided as a width or height parameter,// aspect ratio is maintained
$image->thumbnailImage(100, 0);
echo $image;
?>

2.創建一個目錄下的縮略圖,並保存

<?php
$images = new Imagick(glob('images/*.JPG'));
foreach($images as $image) {
// Providing 0 forces thumbnailImage to maintain aspect ratio
$image->thumbnailImage(1024,0);
}
$images->writeImages();
?>

3.縮略GIF動畫圖片

<?php
/* Create a new imagick object and read in GIF */
$im = new Imagick("example.gif");
/* Resize all frames */
foreach ($im as $frame) {
/* 50x50 frames */
$frame->thumbnailImage(50, 50);
/* Set the virtual canvas to correct size */
$frame->setImagePage(50, 50, 0, 0);
}/* Notice writeImages instead of writeImage */
$im->writeImages("example_small.gif", true);
?>

利用php_imagick實現復古效果的方法

先來看下效果圖


復古效果展示

要實現以上效果,我們先用Photoshop用以下步驟實現。

打開原圖

新建圖層,使用顏色#C0FFFF填充後,不透明度設為44%,圖層混合模式為柔光

新建圖層,使用顏色#000699填充後,不透明設置為48%,圖層混合模式為排除

合並圖層

用PHP代碼,也就只需要按照以上步驟實現即可,代碼如下:

//打開圖片
$im = new Imagick('./hebe.jpg');
//新建圖層,使用顏色`#C0FFFF`填充後,不透明度設為`44%`
$layer = new Imagick();
$layer->newImage($im->getImageWidth(), $im->getImageHeight(), '#C0FFFF');
$layer->setImageOpacity (0.44);
//疊加到原圖上,圖層混合模式為`柔光`
$im->compositeImage($layer, Imagick::COMPOSITE_SOFTLIGHT, 0, 0);
//新建圖層,使用顏色`#000699`填充後,不透明設置為`48%`
$layer = new Imagick();
$layer->newImage($im->getImageWidth(), $im->getImageHeight(), '#000699');
$layer->setImageOpacity (0.48);
//疊加到原圖上,圖層混合模式為`排除` 
$im->compositeImage($layer, Imagick::COMPOSITE_EXCLUSION, 0, 0);
//完成!
$im->writeImage('./vintage.jpg');

總結

以上就是利用php_imagick實現復古效果的方法,文章通過示例代碼介紹的還是很詳細的,感興趣的朋友們自己敲敲代碼更能方便理解,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved