推荐学习书目
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
teli
V2EX  ›  Python

怎么搞定纯 Python 代码解码 jpg 图片,要求无外部依赖

  •  
  •   teli · 2 days ago · 2838 views
    这样的,我想用 tkinter 写一个无外部依赖的 GUI 程序
    但发现 python 不原生支持 jpg
    再三考虑,想到一个办法
    网上找一段纯 python 代码(无依赖),插入到项目中

    注意有个前提,可以接受牺牲图片的部分质量

    网上确实有这样的代码,大概几百行
    问题是网上的代码,只能成功解码部分 jpg 图片,很多图片的处理过程都报错了

    也试过让大语言模型去生成,但是受限于长度限制,都生成失败了
    Supplement 1  ·  1 day ago
    暂时放弃这个念头了
    原因一:jpg 太复杂,网上能找到的可用的 pure python 解码器只支持部分特征
    原因二:pure python 解码 jpg 真的很慢
    26 replies    2026-07-04 13:33:32 +08:00
    hertzry
        1
    hertzry  
       2 days ago via Android
    那你把依赖的库源码全粘贴到本地呗。
    ycl10875222
        2
    ycl10875222  
       2 days ago
    换个思路不就好了 用 python 的内置库把 jpg 转成 png 然后用 tk 解析 png,你都接受牺牲图片质量了 那丢点信息也无所谓了
    TrackBack
        3
    TrackBack  
       2 days ago
    让 AI 帮你重写一遍 stb_image 到纯 python ,原来的 C 代码也就 8000 行
    不过最好说清楚你这里的“无外部依赖”具体指什么、需求是为什么,这样可行方案会更多
    teli
        4
    teli  
    OP
       2 days ago
    @ycl10875222 都说了 python 不支持 jpg
    jko123
        5
    jko123  
       2 days ago
    为什么要那么费劲,不用依赖,PIL 也算是标准库了吧
    paopjian
        6
    paopjian  
       2 days ago
    咱也不懂你为什么有第三方库洁癖, python 只是框架, 第三方才完善了各种功能, jpg 看着简单内部有大量算法优化存储的, 不然你让 AI 去读 PIL 库从 C 反写成 python 得了
    hackfly
        7
    hackfly  
       2 days ago
    jpg 自己搞,开玩笑,bmp/tga 自己搞还差不多
    hefish
        8
    hefish  
       2 days ago
    我也想用 python 实现一个 c++编译器, 我准备让豆包大模型来做。
    Chemist
        9
    Chemist  
       2 days ago   ❤️ 2
    你为什么想用 tkinter 写一个无外部依赖的 GUI 程序?
    感觉又是一个 XY problem
    jim9606
        10
    jim9606  
       1 day ago via Android
    不知道你为啥要图这个无依赖洁癖

    一种思路是别有这种洁癖,找一个 libjpeg 的绑定库来做,例如 pylibjpeg-libjpeg 。libjpeg 是事实标准,不用担心移植不了的问题,而且也不是大包大揽的库,不会引入复杂依赖

    第二种思路是用系统的媒体 api,例如 windows 的 wic 。不过这并不跨平台,得自己写 interprop,不如第一种省事简单
    drymonfidelia
        11
    drymonfidelia  
       1 day ago
    编译成 onefile 再反编译
    XIVN1987
        13
    XIVN1987  
       1 day ago
    找个单文件的 jpeg 解码库,,把它直接放到自己的工程目录下。。

    我用 bottle 就是直接把它放到自己工程目录下,,这样就相当于没有外部依赖了。。
    tf2
        14
    tf2  
       1 day ago
    你是想在 tkinter 展示 jpg ,还是想自己读取 jpg 的 RGB 像素处理然后在 tkinter 展示??
    labubu
        15
    labubu  
       1 day ago
    系统 api
    clemente
        16
    clemente  
       1 day ago
    用 go 写一个 编译好 打包进去
    clemente
        17
    clemente  
       1 day ago
    1.编写 Go 动态链接库代码
    2.Python 使用内置 ctypes 进行 FFI 调用
    erquren
        18
    erquren  
       1 day ago
    刻板映像 +1
    noahliaszn
        19
    noahliaszn  
       1 day ago
    很抽象, 用 python 写一个 gui,然后又要无依赖,
    那为什么不用纯 c 写, 既要又要的感觉
    woshishui2022
        20
    woshishui2022  
       1 day ago
    闲的蛋疼,python 不装第三方库能干嘛啊,估计你这 GUI 程序也就是自己玩玩的
    yougg
        21
    yougg  
       1 day ago
    你让计算机编程届最标志性的胶水编程语言不要外部依赖, 那不如直接换个语言来写了.
    wangtian2020
        22
    wangtian2020  
       1 day ago
    那就把外部依赖拷进来变成内部依赖
    UnluckyNinja
        23
    UnluckyNinja  
       1 day ago
    python 搞 GUI 是次选中的次选吧,嫌 electron 大就算了,那为什么不走 python 社区一惯做法:跑一个本地的 HTTP 服务,让用户去浏览器用前端。你听说过 gradio 吗?
    deplives
        24
    deplives  
       1 day ago
    没苦硬吃?
    sir283
        25
    sir283  
       17h 15m ago
    你都用 python 了,还要无外部依赖?你还活在二十年前吗?那你为什么不直接用 Java 或者 C 语言写呢?为什么不直接用汇编手搓算法呢?哦,对了,python 是可以打包成 exe 的,用 pyinstaller ,如果你是在乎这个的话。
    yuruizhe
        26
    yuruizhe  
       11h 34m ago
    你都找到了网上的开源实现了,再深入调试一下呗
    不过估计大部分 bug 都是数学公式没实现好
    看了下 jpeg 的解码介绍,什么霍夫曼解码,差分脉冲编码调制,zigzag 扫描,离散余弦变换与逆变换,双线性差值上采样,头都大了
    手搓这种轮子,我想都不敢想
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1364 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 17:07 · PVG 01:07 · LAX 10:07 · JFK 13:07
    ♥ Do have faith in what you're doing.