V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
schubert
V2EX  ›  Python

Python 可以实现图片自动拼贴吗?

  •  
  •   schubert · 2023-02-25 13:25:38 +08:00 · 2701 次点击
    这是一个创建于 643 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需要批量处理文件夹下的所有子文件夹里的图片,拼贴成一张大图。 用 turbocollage 可以实现,但需要每个文件夹都操作一次。 怎么上图片来着

    E4Ph8.png E4MN5.png

    33 条回复    2023-02-28 14:16:22 +08:00
    schubert
        1
    schubert  
    OP
       2023-02-25 13:26:59 +08:00
    schubert
        2
    schubert  
    OP
       2023-02-25 13:28:40 +08:00
    raycool
        3
    raycool  
       2023-02-25 13:35:20 +08:00
    python opencv
    schubert
        4
    schubert  
    OP
       2023-02-25 13:37:44 +08:00
    可以实现不同尺寸拼贴满整个新图片吗?
    @raycool
    Yuhyeong
        5
    Yuhyeong  
       2023-02-25 13:42:47 +08:00
    写个算法就行了,opencv 能实现
    ila
        6
    ila  
       2023-02-25 13:44:51 +08:00 via Android
    没有问题的,指定宽高,
    有些图片 resize 下就 ok 了
    schubert
        7
    schubert  
    OP
       2023-02-25 15:57:19 +08:00
    我让 gpt 写了半天,还是要么重叠图片,要么就是一大块留白
    Ufo666
        8
    Ufo666  
       2023-02-25 15:58:03 +08:00
    我写过批量视频九宫格
    schubert
        9
    schubert  
    OP
       2023-02-25 16:05:36 +08:00
    因为每个文件夹里横向和竖向的图片数量不同,所以比较麻烦,
    sadhen
        10
    sadhen  
       2023-02-25 16:45:27 +08:00
    我正在设计用于处理图像的 DSL: https://github.com/liga-ai/ligavision/issues/46

    后面正式发布,应该能满足你的需求
    schubert
        11
    schubert  
    OP
       2023-02-25 16:55:53 +08:00
    @sadhen 大概啥实惠能用哦
    schubert
        12
    schubert  
    OP
       2023-02-25 16:56:14 +08:00
    @sadhen 大概啥时候能用哦,哈哈
    tomczhen
        13
    tomczhen  
       2023-02-25 17:59:37 +08:00 via Android
    可以换个思路,用 py 控制软件来合并,先查一下工具是否支持 cli 操作,不可以的话通过 gui 来操作。
    stardew
        14
    stardew  
       2023-02-25 18:03:48 +08:00
    写个 MaxRects 算法,然后根据算法结果拼
    schubert
        15
    schubert  
    OP
       2023-02-25 18:33:01 +08:00
    谢谢各位大佬给的思路,我试试
    mrytsr
        16
    mrytsr  
       2023-02-25 19:27:43 +08:00 via Android
    PIL 或者 ffmpeg 搞
    chrawsl
        17
    chrawsl  
       2023-02-25 21:01:53 +08:00
    photoshop 就有这个功能
    schubert
        18
    schubert  
    OP
       2023-02-25 21:06:41 +08:00
    @chrawsl 我指的是批量处理
    lovelylain
        19
    lovelylain  
       2023-02-25 21:46:31 +08:00 via Android
    可以,很多年以前移植一款 KMP 皮肤到 PotPlayer ,就是用 Python PIL 库把多个不同尺寸图片拼接成一张大图,然后按坐标去使用,现在早就忘了怎么写了。
    fyq
        20
    fyq  
       2023-02-25 22:22:30 +08:00
    借个楼问一下,对拼接的图做逆向操作,把如 OP 所示的这种有明确边框的图重新拆成一张一张的小图,有哪些现成的轮子可以用?如果没有,想用 Python 实现的话,有什么合适的思路吗?
    think2011
        21
    think2011  
       2023-02-25 22:48:55 +08:00
    @jobmailcn 音译雪碧图的应用,是有蛮多工具支持的,现在一下子想不起有哪些了
    Richard14
        22
    Richard14  
       2023-02-26 01:22:49 +08:00
    各位大佬,这个场景下如果想实现图片合理布局,应该用什么算法啊
    chrawsl
        23
    chrawsl  
       2023-02-26 15:14:48 +08:00
    @schubert 是批处理,全自动的,在 [文件] [自动] [联系表]
    ruanimal
        24
    ruanimal  
       2023-02-26 15:35:43 +08:00
    感觉用 pillow 就能实现,拼图逻辑可能得想想
    lusi1990
        25
    lusi1990  
       2023-02-26 16:12:59 +08:00
    写个脚本 操作 turbocollage . 完美
    schubert
        26
    schubert  
    OP
       2023-02-26 16:19:07 +08:00
    @lusi1990 复杂么
    lusi1990
        27
    lusi1990  
       2023-02-26 17:19:57 +08:00
    @schubert 类似按键精灵. 可以试试 pyautogui. 感觉 两种方案都不算复杂
    sgwk
        28
    sgwk  
       2023-02-26 19:44:38 +08:00
    可以的,用 pillow 。
    secondwtq
        29
    secondwtq  
       2023-02-26 20:31:52 +08:00
    搜一下 Bin Packing / Rectangle Packing 算法
    schubert
        30
    schubert  
    OP
       2023-02-27 10:57:28 +08:00
    @secondwtq
    我去问问 chatgpt
    sadhen
        31
    sadhen  
       2023-02-28 10:48:22 +08:00
    @schubert ligavision-dsl 已经可以用了

    https://github.com/liga-ai/ligavision

    README 里面我提供了三个 notebook 示例,可以直接在 Google Colab 运行的

    用+在水平方向上拼接,用-在竖直方向上拼接,这两个功能大概 3 周之后可以用吧. 具体看我这边同事的需求。因为这不算是一个个人项目,是公司内部有需求,只不过正好是开源的。
    schubert
        32
    schubert  
    OP
       2023-02-28 11:08:35 +08:00
    @sadhen 可以直接在 pycharm 中运行么
    sadhen
        33
    sadhen  
       2023-02-28 14:16:22 +08:00
    @schubert Google Colab 是 Jupyter Notebook 的一种实现,我这边提供 Google Colab 的链接,是因为如果有人感兴趣,可以直接打开链接,用浏览器进入 Google Colab (不需要手动 clone 代码、安装 PyCharm 等各种繁琐的操作)就可以运行 Python 代码。

    PyCharm 和 VSCode 都支持 Jupyter Notebook ,所以这个 notebook 可以在 PyCharm 里面运行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5533 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 08:27 · PVG 16:27 · LAX 00:27 · JFK 03:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.