我正在尝试使用ImageMagick生成测试图像。图像只需包含文本。直截了当地使用example on the IM site不起作用:
class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var titleData: UILabel!
@IBOutlet weak var titleDataTrailingConstraint: NSLayoutConstraint!
var data: String? {
didSet {
titleData.text = data ?? ""
}
}
var row: Int!
var alternativeMode = false
override func layoutSubviews() {
super.layoutSubviews()
if titleDataTrailingConstraint != nil {
let screenSizeWidth = UIScreen.main.bounds.width
if alternativeMode {
titleDataTrailingConstraint.constant = (row % 2 == 0) ? (screenSizeWidth - titleData.bounds.width - 80) : 10
} else {
titleDataTrailingConstraint.constant = 10
}
}
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
self.selectionStyle = .none
}
}
收率:
convert -background lightblue -fill blue -font Roboto -pointsize 72 label:Anthony label.gif
所以1)能够使用字体名称需要什么(我的整个桌面使用Roboto,所以我认为它已正确安装,其他字体名称也不起作用)和2)如果我删除字体规范我仍然得到第二行,没有输出。
我错过了什么吗?
在Ubuntu 14.04上使用convert.im6: unable to read font `Roboto' @ warning/annotate.c/RenderType/853.
convert.im6: no images defined `label.gif' @ error/convert.c/ConvertImageCommand/3044.
。
答案 0 :(得分:1)
convert -background lightblue -fill blue -font Arial -pointsize 72 label:"Anthony" label.gif
在IM 6.9.7.0 Q16 Mac OSX
上,上述工作正常答案 1 :(得分:1)
这是您正在使用的特定版本的ImageMagick中的一个错误,这是由错误修正补丁的错误后退造成的。
有问题的补丁是Debian补丁0161-Do-not-ignore-SetImageBias-bias-value
。我不清楚这是否包含在2016年11月14日的8:6.7.7.10-6ubuntu3.2
或2016年11月29日安全补丁8:6.7.7.10-6ubuntu3.3
的安全更新中(或者,至少我没有打扰)试图找出它,因为它并不重要。)补丁是作为this security patch的后端创建的,但由于文件coders/label.c
中逻辑的重组,更正最终被插入在错误的地方。
本质上,label.c
的逻辑如下:
如果无法使用生成的图像大小,则安全补丁旨在避免步骤6。这可以避免在Web后端使用ImageMagick时出现可能的拒绝服务攻击(这很常见)。它补充说:
3A。如果图像尺寸不可用,请立即失败。
不幸的是,在要应用补丁的版本中,上述步骤的顺序不同,第三步与步骤5混合。(据我所知,这没有什么区别,但它有点混乱,这可能是它随后被修复的原因。)结果是添加的步骤3a插入之前从计算高度复制了图像的高度。如果图像最初没有高度,这会导致检查失败,即使此时已计算出正确的高度。
说明清楚地表明label:
来源不需要-size
(或-pointsize
)参数。但由于错误的补丁,这结果是不正确的;除非在几何体中指定了高度,否则不会生成标签。
我没有为此生成错误报告,因为它仅适用于过时版本的Ubuntu(可能还有Debian)的过时版本的ImageMagic。碰巧我和OP都在某台机器上使用这个过时的Ubuntu版本,我向我们两个人推荐的是升级。但是,如果其他人有这个问题,我正在回答这个问题(我在尝试研究机器上的相同问题时发现了这个问题。)
答案 2 :(得分:0)
除了字体错误之外,我在Windows安装版本7上工作正常,因为我没有安装该字体。将其设置为arial会删除字体错误。
试试看Imagemagick是否能看到你的字体:
identify -list type
否则我会尝试使用路径直接链接到您的字体并将.ttf放在最后。我假设你的字体是.ttf,因为Imagemagick支持那种类型,另一种我不记得了。
出于兴趣,您的版本已有4.5年的历史。
答案 3 :(得分:0)
最终使用-size代替-pointsize使其工作,并切换到caption
,因为我可以更好地控制位置:
convert -background transparent -fill darkblue -font Roboto-Regular -size 200x100 -gravity center 'caption:Test' out.png