PHP Imagick addImage()函数
Imagick::addImage() 方法是一个 PHP 内置函数,用于将新图片添加到 Imagick 对象的图片列表中。在执行完这个操作后,迭代器会被重新定位到列表的末尾。这个函数基于源对象的当前位置,向一个 Imagick 对象添加一个新的图片。Imagick 有能力同时存储和操作多张图片。
语法
bool Imagick::addImage ( $path_to_source_image )
参数
PHP中的add Image函数只有一个参数。此参数表示我们要执行插入操作的图像的绝对路径,文件名和路径作为此函数的参数使用后将被用于在指定位置添加。
返回值
add Image函数的返回类型是布尔类型,这意味着返回值取决于图像插入操作的成功与否。当指定在Add Image函数的参数中的图像成功添加时,add Image函数的返回类型为true,反之,如果由于某些原因导致指定图像的插入操作成功或无法完成,则此函数的返回类型将更改为false。
示例代码
<?php
// require_once('path/to/vendor/autoload.php');
header('Content-type: image/png');
image = new Imagick(
'https://localhost/img1.png');t = new Imagick(
image2.png');
image->addImage(t);
echo $image;
?>
输出:
上面的代码是一个示例代码示例,描述了在PHP中使用add Image函数的用法。首先,我们创建了一个Imagick对象,在创建对象后,借助于这个新创建的对象调用了add Image函数,add Image函数的参数是我们想要添加的PNG图像的绝对路径。
示例1
<?php
src_img = new Imagick("src_img.png");icon = new Imagick();
icon->setFormat("ico");geo=src_img->getImageGeometry();size_w=geo['width'];size_h=geo['height'];
if (128/size_w*size_h>128) {src_img->scaleImage(128,0);
} else {
src_img->scaleImage(0,128);
}src_img->cropImage(128, 128, 0, 0);
clone =src_img->clone();
clone->scaleImage(16,0);icon->addImage(clone);clone = src_img->clone();clone->scaleImage(32,0);
icon->addImage(clone);
clone =src_img->clone();
clone->scaleImage(64,0);icon->addImage(clone);clone = src_img->clone();clone->scaleImage(128,0);
icon->addImage(clone);
icon->writeImages("favicon.ico", true);src_img->destroy();
icon->destroy();clone->destroy();
?>
输出:
在另一个更广泛的场景中,我们将使用添加图像功能来将一个输入图像类型转换为我们需要的输出类型和几何形状。在这个示例中,首先我们创建了一个带有源图像的Imagick对象,在成功创建源图像对象之后,我们使用getImageGeometry函数来获取源图像的几何形状。一旦我们获得了输入图像的宽度和高度,下一步是对源图像进行缩放。为了缩放源图像,我们使用了scaleImage函数。一旦我们有了缩放后的输出图像,下一步是裁剪图像。为了裁剪图像,我们需要将图像存储到一个克隆对象中,该克隆对象将在后面使用。在克隆图像之后,我们使用writeImage函数和addImage函数将结果图像存储到我们的最终图像中。在成功保存所需图像之后,使用destroy函数销毁了在过程中创建的中间对象,这些通过destroy函数销毁的各种对象包括源图像对象、图标对象和克隆对象。
示例2
function appendImages()
{
images = [
[
"../public/images/lories/IMG_1599_480.jpg",
"../public/images/lories/IMG_2561_480.jpg"
],
[
"../public/images/lories/IMG_2837_480.jpg",
"../public/images/lories/IMG_4023_480.jpg"
]
];canvas = new Imagick();
foreach (images asimageRow) {
rowImagick = new Imagick();rowImagick->setBackgroundColor('gray');
foreach (imageRow asimage_path) {
imagick = new Imagick(realpath(image_path));
imagick->setImageBackgroundColor("gray");imagick->resizeimage(200, 200, \Imagick::FILTER_LANCZOS, 1.0, true);
rowImagick->addImage(imagick);
}
rowImagick->resetIterator();
//Add the images horizontally.combinedRow = rowImagick->appendImages(false);canvas->addImage(combinedRow);
}canvas->resetIterator();
//Add the images vertically.
finalimage =canvas->appendImages(true);
finalimage->setImageFormat('jpg');
header("Content-Type: image/jpeg");
echofinalimage->getImageBlob();
}
最后,在这个示例中,我们展示了在另一种情况下使用addImage函数的用法。在这个示例中,我们取了四张图片,将这些图片连接在一起形成一张最终的单一图片。在我们的示例中,首先,我们创建了一个Canvas对象,在成功创建Canvas对象之后,我们通过set background colour函数设置了背景颜色为灰色。一旦设置了背景颜色,下一步就是迭代一组图片,并为每个图片创建一个Imagick对象。在创建图片对象之后,我们再次通过set image colour background函数将每个图片的背景颜色设置为灰色。在更改背景颜色之后,我们将图片调整为我们想要的宽度和高度,这个操作使用了resize Image函数,然后我们使用add Image函数将调整大小或裁剪的图片添加进来。一旦我们针对每个图片迭代完整组图片执行了以上操作,我们将这四张裁剪的图片附加到一个单一的图片中,并将结果存储在我们的Canvas对象中。一旦我们在Canvas对象中获得了结果图片,我们需要调用append images函数,通过这个函数我们能够将这四张图片作为单一的图片输出,我们将其保存为JPG格式。
因此,在这篇文章中,我们看到了如何使用PHP提供的add image函数,在我们期望的位置添加一个新的图片,所以要添加一个新的图片,我们只需要调用add image函数,参数代表了实际存储所要添加的图片的路径。