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

//請注意,數字類型再次為 double
$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.dev.org.tw/RMagick/doc/rvgclip.html

在個人實驗中,所有 JPEG 和 GIF 檔案在此函式上都提供了「Undefined」的 '0',而所有 BMP 和 PNG 檔案在此函式上都提供了「UserSpaceOnUse」的 '2'。

以及一些範例程式碼

<?php

// 作者:holdoffhunger@gmail.com

// 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