gpt4 book ai didi

php - 如何在 PHP 中使用 Imagemagick 仅修剪图像的左侧和右侧?

转载 作者:IT王子 更新时间:2023-10-29 00:10:20 27 4
gpt4 key购买 nike

我正在尝试使用 ImageMagick 和 PHP 仅在图像的左侧和右侧修剪可变数量的空白。有谁知道如何做到这一点(也许使用 imagemagick 以外的东西?)?

这是一个例子。

我有这两张图片:
Test
Test Again
每个都有可变数量的文本,这些文本是在固定宽度的图像中动态创建的。我需要做的是修剪左右两侧的背景,这样图像就会像这样:
TestResult
Test Again Result

如果 ImageMagick 做不到,我愿意使用其他东西,但我需要帮助才能知道究竟如何,因为我不是一个程序员。谢谢!

这是我当前修剪图像所有边的代码:

<?php
/* Create the object and read the image in */
$i = '3';
$im = new Imagick("test".$i.".png");

/* Trim the image. */
$im->trimImage(0);

/* Ouput the image */
//header("Content-Type: image/" . $im->getImageFormat());
//echo $im;
/*** Write the trimmed image to disk ***/
$im->writeImage(dirname(__FILE__) . '/test'.$i.'.png');
/*Display Image*/
echo $img = "<img src=\"test".$i.".png\">";
?>

最佳答案

我认为您使用 ImageMagick-trim 运算符 1) 是正确的,但诀窍是获得它告诉你它做什么而不实际上做它,然后修改它来做你真正想要的...

因此,要为您的第一张图片计算 ImageMagick 的裁切框,您可以这样做:

convert -fuzz 10% image.jpg -format "%@" info:
60x29+21+31

这是一个 60x29 像素的矩形,从左上角横向偏移 21,向下偏移 31。现在,我们希望将这些值放入 bash 变量中,因此我将 IFS(输入字段分隔符)设置为按空格拆分字段,x 以及 + 标志:

#!/bin/bash
IFS=" x+" read a b c d < <(convert -fuzz 10% image.jpg -format "%@" info:)

echo $a $b $c $d
60 29 21 31

现在我可以忽略 2931 因为我们只对裁剪宽度感兴趣,裁剪如下:

convert image.jpg -crop "${a}x+${c}+0" out.jpg

所以,对于你的 2 张图片,我得到了这些:

enter image description here enter image description here

完整的过程是这样的:

#!/bin/bash
IFS=" x+" read a b c d < <(convert -fuzz 10% image.jpg -format "%@" info:)
convert image.jpg -crop "${a}x+${c}+0" out.jpg

注意事项

1) -format %@ 只是 -trim 运算符的简写,完整的就是这样

convert image.jpg -trim info:
image.jpg JPEG 72x40 200x100+16+24 8-bit sRGB 0.000u 0:00.000

关于php - 如何在 PHP 中使用 Imagemagick 仅修剪图像的左侧和右侧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com