gpt4 book ai didi

imagemagick - 为什么我的机器上的范围(imagemagick)行为不统一?

转载 作者:行者123 更新时间:2023-11-30 23:54:32 25 4
gpt4 key购买 nike

我在 rmagick/imagemagick 中使用 extent 将图像放在特定大小的 Canvas 上。

在我的一些机器上,它以它们为中心 - 在其他机器上则相反。如果我修复代码以在一台机器上工作,它会在另一台机器上做完全相反的事情。

有谁知道为什么会这样?

最佳答案

我实际上已经知道答案——在与代码斗争了 5 个小时之后。贴出来仅供引用。

由于一些未知(我认为是愚蠢的)原因,这出现在 ImageMagick 更新日志中:

2010-09-13 6.6.4-2 Cristy <quetzlzacatenango@image...>
# Don't negate the geometry offset for the -extent option.

无论出于何种原因,ImageMagick 团队决定改变一个函数来做 是可以的。与历史上所做的完全相反在一个版本中。

该函数应该保持原样,可以引入具有新行为的推论函数,并且原始函数在多个版本中已被弃用 - 并发出警告。

像这样的策略 - 这几乎是处理此类更改的标准方式 - 将允许那些针对 ImageMagick 构建的事件代码继续正常进行。相反,人们现在必须编写支持此功能的两个版本的代码,或者强制升级。

以下 ruby​​ 代码是如何处理此问题的示例,因为您不知道某人将在他们的机器上运行什么版本。
offset_coords= { 'x' => 100 , 'y' => 100 }
expects_negated = true
# ImageMagick 6.6.4-2 changed the behavior of extent
# me: !(*@&#(#! .
#mversion = "ImageMagick 6.6.4-1 2010-12-07 Q16 http://www.imagemagick.org"
mversion = Magick::Magick_version
( v_version , v_commit ) = mversion.split(' ')[1].split('-')
( v_version_1 , v_version_2 , v_version_3 ) = v_version.split('.')
if Integer(v_version_1) >= 6 and Integer(v_version_2) >= 6 and Integer(v_version_3) >= 4 and Integer(v_commit) >= 2
expects_negated= false
end
if expects_negated
offset_coords['x'] = - offset_coords['x']
offset_coords['y'] = - offset_coords['y']
end

@new_image.background_color= "#000000"
@new_image = @new_image.extent( target_dimensions['w'] , target_dimensions['h'] , offset_coords['x'] , offset_coords['y'] )

关于imagemagick - 为什么我的机器上的范围(imagemagick)行为不统一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4621530/

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