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
13 年前
对于那些对这个类完全没有文档而感到困惑的人(包括被删除的备注,可能包括这个备注),任何“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
16 年前
前面的例子对我不起作用。我收到一个错误,指出 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
16 年前
可以在以下位置找到格式列表:http://www.imagemagick.org/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