gd库 图像处理(imagecopy, imagecopyresampled, imagecopysized)函数所谓的用法

甘骞尧
2023-12-01

说说这三个函数吧,这三个函数都有一个共同点,那就是可以拷贝图像资源。但它们三个用起来的本质就有所区别,imagecopy() 拷贝图像资源的一部分,imagecopyresampled() 重采样拷贝部分图像并调整大小,imagecopyresized 拷贝部分图像并调整大小。对图片处理相对来说应用的比较多,下面来看看它们的用法。

1、imagecopy() 

参数:imagecopy($dst_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h);

说明:dst_img 目标图像资源,src_img 源图像资源,dst_x 目标图像X坐标,dst_y 目标图像Y坐标,src_x 源图像X坐标,src_y 源图像Y坐标,src_w 源图像宽度,src_h 源图像高度

实例:

$imgUrl = "images/2222222222222222.jpg";//源图片路径
list($width, $height) = getimagesize($imgUrl); // 得到源图像的 width,height
$img = imagecreatefromjpeg($imgUrl);

$newImg = imagecreatetruecolor($width, $height); //创建一个新的图像资源

for ($x=0; $x < $width; $x++) {
     //逐条复制图片本身高度,1个像素宽度的图片到薪资源中

    imagecopy($newImg, $img, $width-$x-1, 0, $x, 0, 1, $height);

}

header("Context-type:image/jpeg");
imagejpeg($newImg);

imagedestroy($img);

imagedestroy($newImg); //销毁图像资源

以上所实现的是利用imagecopy()来拷贝图片,对图片以Y轴进行翻转(左右翻转),当全部拷贝完时,就形成了新的图像资源,输出即可。

2、imagecopyresampled()

参数:imagecopyresampled($dst_image,  $src_image, $dst_x, $dst_y, src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);

说明: dst_image   目标图象资源。 src_image    源图象资源。dst_x   目标 X 坐标点。dst_y  目标 Y 坐标点。src_x  源的 X 坐标点。src_y  源的 Y 坐标点。 dst_w   目标宽度。dst_h   目标高度。src_w   源图象的宽度。src_h   源图象的高度。

实例:

<?php
// 源文件
$filename = 'images/test.jpg';

// 设置最大宽高
$width = 200;
$height = 200;

// Content type
header('Content-Type: image/jpeg');

// 获取新尺寸
list($src_w, $src_h) = getimagesize($filename);

$ratio_orig = $src_w/$src_h;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

// 重新取样

$image = imagecreatefromjpeg($filename);
$newImage = imagecreatetruecolor($width, $height);
imagecopyresampled($newImage, $image, 0, 0, 0, 0, $width, $height, $src_w, $src_h);

// 输出
imagejpeg($image_p, null, 100);
?>

上述例子按比例对图像重新采样,这个例子会以最大宽度高度为 200 像素显示一个图像。

3、imagecopyresized()

参数:imagecopyresized ( $dst_image , $src_image , $dst_x , $dst_y ,  $src_x ,  $src_y ,  $dst_w ,  $dst_h , $src_w , $src_h )

说明:

dst_image

目标图象资源。

src_image

源图象资源。

dst_x

x-coordinate of destination point.

dst_y

y-coordinate of destination point.

src_x

x-coordinate of source point.

src_y

y-coordinate of source point.

dst_w

Destination width.

dst_h

Destination height.

src_w

源图象的宽度。

src_h

源图象的高度。

实例:

<?php
// File and new size
$filename = 'test.jpg';
$percent = 0.5;

// Content type
header('Content-Type: image/jpeg');

// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;

// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output
imagejpeg($thumb);
?>

上述例子会以一半的尺寸显示图片(将一幅图像中的一块矩形区域拷贝到另一个图像中)。

 类似资料: