【问题标题】:ImageMagick - calculate perspective without knowing image dimensionsImageMagick - 在不知道图像尺寸的情况下计算透视图
【发布时间】:2014-03-19 13:03:36
【问题描述】:

如何获得图像的最大宽度和高度,对其进行一些数学运算,然后在我的透视变形中使用它?

我有一堆要应用透视变形的图像。

唯一的问题是,每张图片的大小都不一样。

此代码适用于我知道尺寸 (1440 * 900) 的图像。

convert test.jpg -matte \ 
    -virtual-pixel transparent \ 
    -distort Perspective '0,0        75,0 \ 
                          0,900      0,450 \ 
                          1440,0     1440,200 \ 
                          1440,900   1200,900' \ 
    distorted.jpg

我知道我可以使用 %h%w 获得最大值 - 但我找不到将这些数字相乘的方法。

基本上,我想要做的是这样定义点:

    -distort Perspective '0,0        75,0 \ 
                          0,%h       0,(%h/2) \ 
                          %w,0       %w,200 \ 
                          %w,%h      (%w*0.75),%h'

对于奖励积分,我希望能够使用-distort Perspective '@points.txt' 调用视角

【问题讨论】:

    标签: imagemagick imagemagick-convert


    【解决方案1】:

    您可以使用 ImageMagick 内置的fx 运算符为您做数学运算,而无需涉及bash 数学、bceval

    像这样:

    persp=$(convert image.jpg -format "0,0 75,0 0,%h 0,%[fx:int(h/2)] %w,0,%w,200 %w,%h %[fx:int(w*0.75)],%h" info:)
    
    echo $persp
    0,0 75,0 0,900 0,450 1440,0,1440,200 1440,900 1080,900
    

    然后做:

    convert image.jpg ... -distort Perspective "$persp" ... distorted.jpg
    

    哦,对于那些奖励积分... ;-)

    convert image.jpg -format "0,0 75,0 0,%h 0,%[fx:int(h/2)] %w,0,%w,200 %w,%h %[fx:int(w*0.75)],%h" info: > points.txt
    convert image.jpg ... -distort Perspective @points.txt distorted.jpg
    

    【讨论】:

    • 哇!没想到会得到答复。完美,谢谢:-)
    猜你喜欢
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多