Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ubuntu上剪切并连接imagemagick中的图像_Imagemagick - Fatal编程技术网

在Ubuntu上剪切并连接imagemagick中的图像

在Ubuntu上剪切并连接imagemagick中的图像,imagemagick,Imagemagick,我是一名对imagemagick了解甚少的程序员。我有一大组PNG图像,需要通过googlevisionapi从中提取文本。由于这个API非常昂贵,我想尽量减少请求的数量,所以我想将多个图像合并到一个不超过4MB大小的图像中 我附上了一个样本图像 此图像包含30个用户数据块。每个区块都有一个空白的照片部分。我想删除这个空白部分(文本到垂直线后的整个部分) 加入30张这样的图片中的结果图片。我想将30-40个图像中的所有用户数据图像合并到单个图像中。因此,它将像一幅图像中的900个用户数据块 我请

我是一名对
imagemagick
了解甚少的程序员。我有一大组
PNG
图像,需要通过
googlevisionapi
从中提取文本。由于这个API非常昂贵,我想尽量减少请求的数量,所以我想将多个图像合并到一个不超过4MB大小的图像中

我附上了一个样本图像

  • 此图像包含30个用户数据块。每个区块都有一个空白的照片部分。我想删除这个空白部分(文本到垂直线后的整个部分)
  • 加入30张这样的图片中的结果图片。我想将30-40个图像中的所有用户数据图像合并到单个图像中。因此,它将像一幅图像中的900个用户数据块

  • 我请求一些
    imagemagick
    专家来帮助我。

    您可以像这样裁剪出第1、2和3列:

    convert sheet.png +repage -crop 240x+0+0 c1.png
    convert sheet.png +repage -crop 240x+376+0 c2.png
    convert sheet.png +repage -crop 240x+750+0 c3.png
    
    convert c1.png  c2.png c3.png +append result.png
    

    并将尽可能多的数据连接到一起,以达到4MB,如下所示:

    convert sheet.png +repage -crop 240x+0+0 c1.png
    convert sheet.png +repage -crop 240x+376+0 c2.png
    convert sheet.png +repage -crop 240x+750+0 c3.png
    
    convert c1.png  c2.png c3.png +append result.png
    

    我注意到原来的是22kB,减少的是17kB


    请注意,如果您喜欢这种方法,您可以在一行中完成所有操作,如下所示。我没有添加“附加在一起”部分,因为这将根据大小而变化:

    convert sheet.png +repage \
       \( +clone -crop 240x+0+0   -write c1.png +delete \) \
       \( +clone -crop 240x+376+0 -write c2.png +delete \) \
       -crop 240x+750+0 c3.png
    

    你试过什么?在提出问题之前,你应该至少付出一些努力。所有数据块看起来都一样,因此删除照片部分非常简单。正如将它们制作成大型图像一样,如果您进行搜索,本论坛上也有关于这样做的帖子。对平面黑色区域进行编码不会占用太多空间,因此删除它们不太可能为您节省太多空间。@MarkSetchell,但它将帮助我减少生成图像的宽度和高度。是吗?是的,但你的问题让我相信Google Vision API限制在4MB,而不是任何像素高度或宽度。30张图像节省了20%左右,然后@Mark Setchell OP说他有900张,所以应该在4MB的限制范围内。我想知道OCR在图像质量上的效果如何。@MarkSetchell非常感谢,我将以此为基础。如果你还记得我在尝试tesseract,但是它对于我的数据量来说太慢了,所以我求助于使用Google API,但是它有点侮辱我作为一个开发人员,我无法想出一个解决方案。