Imagick::getImageUnits

(PECL imagick 2, PECL imagick 3)

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

描述

public Imagick::getImageUnits(): int

获取图像分辨率单位。

参数

此函数没有参数。

返回值

返回图像分辨率单位。

错误/异常

在错误时抛出 ImagickException。

添加注释

用户贡献的注释 2 个注释

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]);

// 注意数字类型再次为 double
$r = $i->getImageResolution();
}
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。

了解图像的裁剪路径单位默认值有什么用?根据维基百科关于 "裁剪路径" 的文章,裁剪路径是 "用于在图像编辑软件中剪切二维图像的闭合矢量路径或形状。应用裁剪路径后,路径内部的所有内容都将被包含在内;路径外部的所有内容都将被省略。"

官方 ImageMagick 文档只提供了进入或退出裁剪路径单位值的两个有效值,一个是 userSpaceOnUse,另一个是 ObjectBoundingBox。提供的唯一定义:"如果 userSpaceOnUse,则裁剪路径的内容表示在裁剪路径被引用时当前用户坐标系中的值。如果 objectBoundingBox,则裁剪路径内容的用户坐标系将使用应用裁剪路径的对象的边界框来建立。默认值为 userSpaceOnUse。" http://www.imagemagick.org/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