PHP Conference Japan 2024

Imagick::getImageUnits

(PECL imagick 2, PECL imagick 3)

Imagick::getImageUnits获取图像分辨率单位

描述

public Imagick::getImageUnits(): int

获取图像分辨率单位。

参数

此函数没有参数。

返回值

返回图像分辨率单位。

错误/异常

发生错误时抛出 ImagickException。

添加注释

用户贡献的注释 2 条注释

1
Victor
6 年前
这是一个关于如何解释和使用 ImageResolution 和 ImageUnits 的示例

$i = new Imagick('some_image_file.png');

$r = $i->getImageResolution();
$u = $i->getImageUnits();
if ($u == Imagick::RESOLUTION_PIXELSPERCENTIMETER) {
$r[x] = (int)round($r[x] * 2.54);
$r[y] = (int)round($r[y] * 2.54);
$i->setImageUnits(Imagick::RESOLUTION_PIXELSPERINCH);
$i->setImageResolution($r[x], $r[y]);

//注意数字类型再次变为双精度
$r = $i->getImageResolution();
}
0
holdoffhunger at gmail dot com
12 年前
通过使用PHP函数getImageUnits,您可以获取一个整数,该整数表示ImageMagick包的预定义PATHUNITS常量的计算结果。为此,您只有四个值。它们看起来像“imagick::PATHUNITS_UNDEFINED”,_VALUE值为:undefined、userspace、userspaceonuse和objectboundingbox。如果打印,Undefined为0,userspace为1,userspaceonuse为2,objectboundingbox为3。

知道图像的剪切路径单位默认值有什么用?根据维基百科关于“剪切路径”的文章,剪切路径是“在图像编辑软件中用于剪切2D图像的闭合矢量路径或形状。应用剪切路径后,路径内的任何内容都将包含在内;路径外的任何内容都将从输出中省略。”

ImageMagick官方文档只提供了两个进入或离开剪切路径单位值的有效值,一个是userSpaceOnUse,另一个是ObjectBoundingBox。提供的唯一定义:“如果userSpaceOnUse,则剪切路径的内容表示在引用剪切路径时当前用户坐标系中的值。如果是objectBoundingBox,则剪切路径内容的用户坐标系是使用应用剪切路径的对象的边界框建立的。默认值为userSpaceOnUse。” https://imagemagick.org.cn/RMagick/doc/rvgclip.html

在个人实验中,所有JPEG和GIF文件在此函数上都提供了“Undefined”的'0',所有BMP和PNG文件在此函数上都提供了“UserSpaceOnUse”的'2'。

以及一些示例代码

<?php

// 作者:[email protected]

// Imagick 类型
// ---------------------------------------------

$imagick_type = new Imagick();

// 打开文件
// ---------------------------------------------

$file_to_grab = "image_workshop_directory/test.gif";

$file_handle_for_viewing_image_file = fopen($file_to_grab, 'a+');

// 获取文件
// ---------------------------------------------

$imagick_type->readImageFile($file_handle_for_viewing_image_file);

// 获取图像单位
// ---------------------------------------------

$image_page = $imagick_type->getImageUnits();

// 解释单位值
// ---------------------------------------------

switch($image_units)
{
case
imagick::PATHUNITS_UNDEFINED:
$image_units_printable = "Undefined";
break;

case
imagick::PATHUNITS_USERSPACE:
$image_units_printable = "User Space";
break;

case
imagick::PATHUNITS_USERSPACEONUSE:
$image_units_printable = "User Space On Use";
break;

case
imagick::PATHUNITS_OBJECTBOUNDINGBOX:
$image_units_printable = "Object Bounding Box";
break;
}

// 打印单位值
// ---------------------------------------------

print(" Image Units: # $image_units -- $image_units_printable .");

?>
To Top