• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ppzbreeze
V2EX  ›  程序员

老哥们有没有用过 PIL 处理图像的,遇到一个奇异的问题

  •  
  •   ppzbreeze · Jan 20, 2020 · 2592 views
    This topic created in 2329 days ago, the information mentioned may be changed or developed.
    在用 PIL 处理 jpg 图像的时候,我把图像的 RGB 分别设置成 255,255,254,保存成文件,但是再打开之后就变成 255,255,253 了,这是什么奇怪的现象?

    def test():
    width_qr = img_test.size[0]
    height_qr = img_test.size[1]
    for i in range(0,width_qr):
    for j in range(0,height_qr):
    img_test.putpixel((i, j), (255, 255, 254, 1))
    img = img_test.convert("RGB")
    img.save("F:/p/test2.jpg")
    img_test1 = Image.open("F:/p/test2.jpg")
    width_test = img_test1.size[0]
    heigth_test = img_test1.size[1]
    for i in range(0,width_test):
    for j in range(0,heigth_test):
    data = (img_test1.getpixel((i, j)))
    print(data)
    10 replies    2020-01-20 13:17:51 +08:00
    MinQ
        1
    MinQ  
       Jan 20, 2020
    jpg 的锅,作为压缩图片,jpg 不保证存储的时候值的一致性。想要保证图片在保存后的一致性,请用 png 格式
    f4M9RRTZIKP4yt7O
        2
    f4M9RRTZIKP4yt7O  
       Jan 20, 2020
    试了一下,jpg 改成 png 就正常了
    jdhao
        3
    jdhao  
       Jan 20, 2020
    应该是 JPG 图片在保存的时候一些压缩算法,更改了像素值。
    ppzbreeze
        4
    ppzbreeze  
    OP
       Jan 20, 2020
    @MinQ 有时候波动不止 1,可能达到 2-3 甚至 4,看来还是要 png 靠谱些

    @jdhao 老哥有深入研究过这个吗
    qieqie
        5
    qieqie  
       Jan 20, 2020 via iPhone
    jpeg save 的时候可以设置 quality
    nightwitch
        6
    nightwitch  
       Jan 20, 2020
    jpg 是压缩格式,涉及到浮点运算和采样,尤其是采样,难免会有波动
    jdhao
        7
    jdhao  
       Jan 20, 2020 via Android
    @ppzbreeze 没有深入研究,记得在 stack overflow 看到过,你的需求没说清楚,具体要做什么用呢
    Death
        8
    Death  
       Jan 20, 2020
    普通的 jpeg 是有损压缩
    no1xsyzy
        9
    no1xsyzy  
       Jan 20, 2020
    “有损”
    看下 JPEG 的原理就行了
    简单地说,通过了一个低通滤波器
    GrayXu
        10
    GrayXu  
       Jan 20, 2020
    因为 PIL save to jpg 有压缩,你搞个正常图进去出来一次就发现细节损失了。指定下 quality 参数就好了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   852 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 20:52 · PVG 04:52 · LAX 13:52 · JFK 16:52
    ♥ Do have faith in what you're doing.