PHP Conference Japan 2024

Imagick::setImageFormat

(PECL imagick 2, PECL imagick 3)

Imagick::setImageFormat设置特定图像的格式

描述

public Imagick::setImageFormat(string $format): bool

设置序列中特定图像的格式。

参数

format

图像格式的字符串表示形式。格式支持取决于 ImageMagick 安装。

返回值

成功时返回 true

添加注释

用户贡献的注释 7 条注释

8
nathan at crause dot name
14 年前
对于那些完全被这个类的完全缺乏文档(包括被删除的注释,可能包括此注释)而感到困惑的人,任何“setXXX”和“setImageXXX”之间的差异似乎完全取决于图像的加载方式。

如果图像是在对象构造函数时加载的,则似乎您使用“setXXX” - 如果您在之后加载了它(例如通过“readImageBlob”),则您使用“setImageXXX”。

然而,这是不规则的。例如

<?php
$image
= new Imagick();

$image->setResolution(300, 300);
$image->readImageBlob(...);
// 将输出转换为 JPEG
$image->setImageFormat('jpeg');
$image->setImageCompressionQuality(90);
?>

请注意,我们使用“setResolution”而不是“setImageResolution”。
5
optymizer at yahoo dot com
17 年前
前面的例子对我来说不起作用。我收到一个错误,即 IMagick 对象无法转换为字符串。

此示例使用 IMagick::getImageBlob() 方法正确输出已转换图像的内容

function getImage($filename)
{
$image->readImage($filename);
$image->setImageFormat("png");
header("Content-type: image/png");
echo $image->getImageBlob();
}

希望这有帮助!
2
layzee dot dk at gmail dot com
11 年前
此方法仅影响已加载/构造的单个图像。

要设置整个对象的格式,请使用 Imagick::setFormat 方法。例如,加载 TIFF 文件,然后对 Imagick 对象使用 setFormat('pdf'),然后使用 writeImagesFile('foo.pdf') 或 getImagesBlob()。
2
markus dot s dot schmitz at gmail dot com
11 年前
如果使用 writeFile 或 writeFiles 而不设置格式,则会根据 writeFile 参数中使用的文件扩展名自动设置格式。
1
andy at live dot nl
15 年前
我在使用 $im->setImageFormat('jpeg'); 时遇到了问题。
当我将 pdf 转换为 jpg 缩略图时,图像颜色被反转了。
必须添加 $im->setImageColorspace(255); 来解决它。

<?php
// 读取第 1 页
$im = new imagick( 'test.pdf[ 0]' );

// 转换为 jpg
$im->setImageColorspace(255);
$im->setCompression(Imagick::COMPRESSION_JPEG);
$im->setCompressionQuality(60);
$im->setImageFormat('jpeg');

// 调整大小
$im->resizeImage(290, 375, imagick::FILTER_LANCZOS, 1);

// 在服务器上写入图像
$im->writeImage('thumb.jpg');
$im->clear();
$im->destroy();
?>
1
Devo
17 年前
可以在此处找到格式列表:https://imagemagick.org.cn/script/formats.php

标有 W 的格式可以使用 writeImage 输出到文件(功能当然取决于您特定的安装)。

例如

<?php
// 从 image.jpg 创建新的 imagick 对象
$im = new Imagick( "image.jpg" );

// 将格式更改为 png
$im->setImageFormat( "png" );

// 将图像作为 png 输出到浏览器
header( "Content-Type: image/png" );
echo
$im;

// 或者您可以将图像输出到文件:
//$im->writeImage( "image.png" );
?>
0
barclay[dot]loftus[at]gmail.com
16 年前
关于图像输出的另一个说明。对于 jpeg 图像,质量由 Imagick::setCompressionQuality() 调整。

<?php
$img
->setCompressionQuality(90);
$img->setImageFormat('jpeg');
header('Content-type: image/jpg');
echo
$img;
?>
To Top