如何使用 imagick 扩展更改图像的 dpi

发布于 2024-09-27 03:37:29 字数 325 浏览 8 评论 0原文

我需要将所有上传的文件更改为 72 dpi。 我正在使用 php imagick 扩展。

这是我尝试过的(我使用的图像是 300dpi):

$image = new Imagick();
$image->setResolution(72,72) ;
$image->readImage($img);
$image->resampleImage  (72,72,imagick::FILTER_UNDEFINED,1);
$image->writeImage($target)

这似乎没什么。 图像正在上传,但保持在 300dpi

I need to change all uploaded files to 72 dpi.
I'm using the php imagick extension.

heres what i've tried (the image i'm using is 300dpi):

$image = new Imagick();
$image->setResolution(72,72) ;
$image->readImage($img);
$image->resampleImage  (72,72,imagick::FILTER_UNDEFINED,1);
$image->writeImage($target)

this doesn't seem to anything.
the image is uploading, but stays at 300dpi

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

狼性发作 2024-10-04 03:37:29

MatTheCat 的回答是正确的。您还可以尝试 setImageUnits() 以确保它使用英寸而不是厘米。

$image->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
$image->setImageResolution(72,72);

仅仅为了改变 dpi 就不需要重新采样。

请注意,单独更改 dpi 不会影响文件大小,仅适用于重新采样和打印。

MatTheCat's answer is spot on. You might also try setImageUnits() to ensure it's working with inches and not centimeters.

$image->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
$image->setImageResolution(72,72);

Resampling isn't necessary just to change dpi.

Note that changing the dpi alone will not affect file size and only applies to resampling and printing.

救星 2024-10-04 03:37:29

看来你必须使用 setImageResolution 而不是 setResolution : http:// www.php.net/manual/fr/function.imagick-setresolution.php#95533

It seems you have to use setImageResolution rather than setResolution : http://www.php.net/manual/fr/function.imagick-setresolution.php#95533

肤浅与狂妄 2024-10-04 03:37:29

使用它与 imagick 扩展一起工作:

$finalImageOnline = $canvas->getCore(); //get Imagick object
    $finalImageOnline->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
    $finalImageOnline->setImageResolution(72,72);
    $finalImageOnline->resampleImage  (72,72,imagick::FILTER_SINC,1);
    $finalImageOnline->setImageFormat("jpg");
    file_put_contents ($this->path . '/' . 'online' . '/' .$namaFile.'.jpg', $finalImageOnline);

use this its work with imagick extension :

$finalImageOnline = $canvas->getCore(); //get Imagick object
    $finalImageOnline->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
    $finalImageOnline->setImageResolution(72,72);
    $finalImageOnline->resampleImage  (72,72,imagick::FILTER_SINC,1);
    $finalImageOnline->setImageFormat("jpg");
    file_put_contents ($this->path . '/' . 'online' . '/' .$namaFile.'.jpg', $finalImageOnline);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文