php圖像縮放和裁剪技術(shù)
上一章我們學(xué)習(xí)了圖片的水印技術(shù),水印技術(shù)和我們這一章要學(xué)習(xí)到的縮放、裁剪技術(shù)基本一致,只不過(guò)使用的函數(shù)發(fā)生了一點(diǎn)點(diǎn)變化。
常用的兩個(gè)函數(shù)如下:
函數(shù)名 | 函數(shù)說(shuō)明 |
---|---|
imagecopyresampled | 重采樣拷貝部分圖像并調(diào)整大小 |
imagecopyresized | 拷貝部分圖像并調(diào)整大小 |
我們來(lái)看看這兩個(gè)函數(shù),這兩個(gè)函數(shù)用起來(lái)不難。就是參數(shù)略有些復(fù)雜。并且來(lái)完成圖像的縮放或者裁剪:
bool imagecopyresampled ( resource $目標(biāo)圖 , resource $來(lái)源圖 , int $目標(biāo)開(kāi)始的x位置 , int $目標(biāo)開(kāi)始的y位置 , int $來(lái)源開(kāi)始的x位置 , int $來(lái)源開(kāi)始的y位置 , int $目標(biāo)圖片的寬 , int $目標(biāo)圖片的高, int $來(lái)源圖片的寬 , int $來(lái)源圖片的高 )
請(qǐng)注意,上下兩個(gè)圖片的參數(shù)都是一樣的。
bool imagecopyresized ( resource $目標(biāo)圖 , resource $來(lái)源圖 , int $目標(biāo)開(kāi)始的x位置 , int $目標(biāo)開(kāi)始的y位置 , int $來(lái)源開(kāi)始的x位置 , int $來(lái)源開(kāi)始的y位置 , int $目標(biāo)圖片的寬 , int $目標(biāo)圖片的高, int $來(lái)源圖片的寬 , int $來(lái)源圖片的高 )
圖片縮放和裁剪的方法都是一樣的,不同的是拷貝時(shí)拷貝的是整張圖片還是部份部片。
操作方式說(shuō)明:
從來(lái)源圖片的開(kāi)始點(diǎn)(x,y)起,指定的寬高的大小圖片。放至到目標(biāo)圖片的起點(diǎn)(x,y),指定寬高大小的圖片中。
一、縮放圖片,我們將操作步驟化
1.打開(kāi)來(lái)源圖片
2.設(shè)置圖片縮放百分比(縮放)
3.獲得來(lái)源圖片,按比調(diào)整大小
4.新建一個(gè)指定大小的圖片為目標(biāo)圖
5.將來(lái)源圖調(diào)整后的大小放到目標(biāo)中
6.銷(xiāo)毀資源
我們將范冰冰進(jìn)行縮放:
<?php //打開(kāi)來(lái)源圖片 $image = imagecreatefrompng('fbb.png'); //定義百分比,縮放到0.1大小 $percent = 0.1; // 將圖片寬高獲取到 list($width, $height) = getimagesize('fbb.png'); //設(shè)置新的縮放的寬高 $new_width = $width * $percent; $new_height = $height * $percent; //創(chuàng)建新圖片 $new_image = imagecreatetruecolor($new_width, $new_height); //將原圖$image按照指定的寬高,復(fù)制到$new_image指定的寬高大小中 imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); header('content-type:image/jpeg'); imagejpeg($new_image); ?>
二、裁剪圖片,我們將操作步驟化:
????1.打開(kāi)來(lái)源圖片和目標(biāo)圖片
????2.截取來(lái)源圖片中的點(diǎn),設(shè)置寬高。放至到目標(biāo)圖片中。(裁剪)
????3.保存圖片輸入
????4.銷(xiāo)毀資源
我們將下圖中的“度”字裁減出來(lái)放至到哈士奇的臉上:
百度logo:
哈士奇圖片:
我們來(lái)梳理一下思路:
度的開(kāi)始的坐標(biāo)x,y軸為:407,154
度這個(gè)字從x,y坐標(biāo)開(kāi)始的寬、高為:80,89
圖片中哈士奇臉的位置的x,y軸位置為:281,71
圖片中哈士奇臉的x,y坐標(biāo)寬、高為:132,160
坐標(biāo)和寬高我們都清楚了我們開(kāi)始按照函數(shù)的用法來(lái),使用代碼來(lái)操作圖片:
<?php $dst = imagecreatefrompng('hsq.png'); $src = imagecreatefrompng('du.png'); imagecopyresized($dst, $src, 281, 71, 407, 154, 132, 160, 80, 90); header('content-type:image/jpeg'); imagejpeg($dst); imagedestroy($dst); imagedestroy($src); ?>
我們來(lái)看看實(shí)驗(yàn)效果: