Python 可以实现图片自动拼贴吗? - V2EX
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 3367 次点击
    这是一个创建于 1025 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需要批量处理文件夹下的所有子文件夹里的图片,拼贴成一张大图。 用 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     Solana     2862 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 14:21 PVG 22:21 LAX 06:21 JFK 09:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86