PHP Imagick::charcoalImage()
The Imagick::charcoalImage() 方法是一个用于模拟图像素描的PHP内置函数。此函数将根据传入的参数图像创建一个炭笔图像。我们将要将图像作为输入传递给这个函数,函数生成的输出即为该图像的炭笔副本。
此函数接受以下参数,如上所述:
- $radius : 高斯半径的像素值存储在此参数中。
- $sigma : 高斯标准差的像素值存储在此参数中。
返回值
返回值是一个布尔值,取决于函数的成功或失败。如果输入图像成功转换为炭笔图像,此函数的返回类型将为true。另一方面,如果输入图像转换为炭笔图像失败,此函数的返回类型将更改为false。
现在让我们看一个使用此函数将图像转换为炭笔替代品的示例代码。
示例代码
<?php
function charcoalImage(imagePath,radius, sigma) {imagick = new \Imagick(realpath(imagePath));imagick->charcoalImage(radius,sigma);
header("Content-Type: image/jpg");
echo $imagick->getImageBlob();
}
?>
输出:
上面所写的代码将成功地将图像转换为其炭笔替代品。要指定要转换为炭笔图像的哪个图像,我们需要传递文件路径,因此文件路径将是我们要应用此操作的实际文件部分。
附加说明
该函数的参数有些可怕。我花了一些时间来拼凑它。高斯函数是“刷子”,半径是刷子的半径,标准差是刷子印象大小之间的方差程度(在Gimp / Photoshop术语中)。$radius
参数可以设置为0到你能想象的最高值,但是一旦超过10,20或30个像素,根据图像大小,图像就会变得太模糊而无法辨认。为了达到预期的效果,$sigma
或标准差应小于半径。可以这样考虑:“$radius
像素大小的炭笔刷,每个刷子都比那个更大或更小$sigma
像素。”
对于普通的500 x 500像素图像,您可能需要3到5个像素的半径和1到3个像素的$sigma
,但是在图像变得难以辨认之前,通常可以增加到10个像素。 (目前,$radius:5 / $sigma
:2是这个400×400图像的理想组合)。此代码打开提供的文件,将炭笔图像效果应用于它,然后将其保存到另一个指定的文件。参数通过POST数据传递,使用的唯一的ImageMagick函数是读取图像文件,炭笔图像和写入图像文件,如下所示:
代码:
<?php
// Grab Inbound Data -- Function Parameters
// --------------------------------------------------
inbound_gaussian_radius_nk =_POST['radius_of_gaussian'];
inbound_standard_deviation_nk =_POST['standard_deviation_of_gaussian'];
// Grab Inbound Data -- Read-File and Write-File
// --------------------------------------------------
file_to_be_used =_POST['file_target'];
inbound_save_as_filename =_POST['saveable_result_file'];
// Grab Image File Data
// ---------------------------------------------
location_of_the_folder_nk = "images/workshop/";file_to_get_the_location_nk = location_of_the_folder_nk .file_to_be_used;
type_of_imagick_nk = new Imagick();
// Open File
// ---------------------------------------------file_handle_for_viewing_image_file_nk = fopen(file_to_get_the_location_nk, 'a+');
// Read File
// ---------------------------------------------type_of_imagick_nk->readImageFile(file_handle_for_viewing_image_file_nk);
// Perform Function
// ---------------------------------------------type_of_imagick_nk->charcoalImage(inbound_gaussian_radius_nk,inbound_standard_deviation_nk);
// Save File
// ---------------------------------------------
location_of_the_folder_nk = "images/workshop/";file_to_get_the_location_nk = location_of_the_folder_nk .inbound_save_as_filename;
file_handle_for_saving_image_file_final_nk = fopen(file_to_get_the_location_nk, 'a+');
// Write File
// ---------------------------------------------
type_of_imagick_nk->writeImageFile(file_handle_for_saving_image_file_final_nk);
?>
输出:
因此,本文简要介绍了如何使用此特定的PHP内置函数将简单图像转换为对应的炭笔效果图。除了Imagick::charcoalImage()函数外,我们还使用了其他一些函数,我们将在其他文章中介绍这些函数。