我正在和RMagick一起做一个红宝石项目,我从一个文件中加载一个图像,初始化具有裁剪部分的对象,然后尝试重新裁剪这些子图像。对于裁剪图像,它会创建一个尺寸为1x1的图像。
然而,它在我创建的玩具,琐碎的版本中工作:
i = Image.read('sample.png')[0]
=> sample.png PNG 1000x800 1000x800+0+0 DirectClass 8-bit 47kb
si = i.crop(50, 50, 900, 700)
=> sample.png PNG 1000x800=>900x700 1000x800+50+50 DirectClass 8-bit
ssi = i.crop(50, 50, 800, 600)
=> sample.png PNG 1000x800=>800x600 1000x800+100+100 DirectClass 8-bit等等。
它似乎可以无限期地工作,至少在4代人中有效。
然而,我的代码肯定不能工作。我一直无法构建一个不起作用的简单版本,但这是我实际代码的简化相关部分。
https://gist.github.com/mikaylathompson/9ca5db7569d6bfba6008
doc = Document.new('sample.png')
doc.split
doc.sort
# This image is just fine
doc.tables[0].image
=> sample.png PNG 1000x800=>745x150 1000x800+125+350
doc.tables[0].divide_rows
# and this image failed
doc.tables[0].rows[0].image
=> sample.png PNG 1000x800=>1x1 1000x800-1-1 DirectClass 8-bit
# this fails too, so it's based on the image, not the dimensions
doc.tables[0].image.crop(50, 50, 100, 100)
=> sample.png PNG 1000x800=>1x1 1000x800-1-1 DirectClass 8-bit发布于 2015-06-06 05:00:50
您可以通过将'true‘作为最后一个参数传递给派生图像中的源图像,告诉crop()不包括来自源图像的元数据维度(这些维度似乎会干扰作物的裁剪),如下所示:
doc.tables[0].image.crop(50, 50, 100, 100, true)https://stackoverflow.com/questions/29786590
复制相似问题