1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        3行Python 代碼實(shí)現(xiàn)圖片壓縮

        共 1070字,需瀏覽 3分鐘

         ·

        2021-11-05 10:09

        大家好,我是一行

        最近因?yàn)楣ぷ?,?jīng)常需要在網(wǎng)站提交一些文件和圖片

        但是在提交圖片的時(shí)候,有些網(wǎng)站總是會(huì)提醒我你的圖片文件過大,請(qǐng)?zhí)峤徊怀^ 2 MB大小的圖片、

        想想也正常,不限制圖片大小容易被塞爆服務(wù)器,但是我手機(jī)這1億像素的照片讓我很難辦呀

        而且在線壓縮的網(wǎng)站也有上限大小,不然就收費(fèi),不然就收費(fèi),不然就收費(fèi)

        這種簡(jiǎn)單功能我要是還付費(fèi),豈不是丟了pythoner的face了嗎?!我把它實(shí)現(xiàn)了我也去上線~

        1原理

        仔細(xì)分析了一下,圖片壓縮的原理其實(shí)很簡(jiǎn)單

        簡(jiǎn)單來說,像素圖片過大的原因不就是像素格太多了嘛

        只要讀取所有像素,按規(guī)律刪掉或者合并像素格,圖片的就變小了

        當(dāng)然也要區(qū)別有損和無損的情況,只要視覺上過的去,那就沒什么問題


        2代碼塊

        簡(jiǎn)單壓縮

        下面三行代碼完成了圖片從 9 MB到 327.65 KB 的壓縮效果

        只需要使用PIL導(dǎo)入圖片,再按照壓縮率保存就可以了

        下面這張結(jié)果圖,顯然壓縮過到我都認(rèn)出來的情況

        from?PIL?import?Image

        im?=?Image.open("pic/cat.jpg")
        #?保存,quality是壓縮比率
        im.save("cat-out2.jpg",?quality=1)?

        進(jìn)階壓縮

        進(jìn)一步修改壓縮的代碼,可以設(shè)定壓縮圖片的目標(biāo)大小

        然后使用循環(huán)來迭代完成目標(biāo),最后封裝成函數(shù),未來就可以批量壓縮圖片了

        def?compress_image(infile,?outfile='',?mb=1500,?step=10,?quality=80):
        ????"""不改變圖片尺寸壓縮到指定大小
        ????:param?infile:?壓縮源文件
        ????:param?outfile:?壓縮文件保存地址
        ????:param?mb:?壓縮目標(biāo),KB
        ????:param?step:?每次調(diào)整的壓縮比率
        ????:param?quality:?初始?jí)嚎s比率
        ????:return:?壓縮文件地址,壓縮文件大小
        ????"
        ""
        ????o_size?=?os.path.getsize(file)/1024
        ????if?o_size?<=?mb:
        ????????return?infile
        ????outfile?=?get_outfile(infile,?outfile)
        ????while?o_size?>?mb:
        ????????im?=?Image.open(infile)
        ????????im.save(outfile,?quality=quality)
        ????????if?quality?-?step?????????????break
        ????????quality?-=?step
        ????????o_size?=?get_size(outfile)
        ????return?outfile,?get_size(outfile)

        像這樣從9 MB 壓縮到 1.47 MB,肉眼也是看不出來有什么明顯差別,妥妥可以提交到網(wǎng)站上了

        3最后

        雖然說,程序員不必要去重復(fù)造輪子

        但是想想有多少人上傳自己的身份證、畢業(yè)證等文件到這些在線平臺(tái)進(jìn)行圖片壓縮

        如果這些在線網(wǎng)站將個(gè)人信息的相關(guān)圖片都保存下來,日后加以利用,我的小愛語音助手可能接不過來電話了

        居然還聊起來了

        所以說,對(duì)于個(gè)人信息安全還是需要保持謹(jǐn)慎

        我是一行,技術(shù)用不眠,我們下期見~



        對(duì)了,一行用爬蟲爬取了知乎里150000字的python學(xué)習(xí)攻略,并統(tǒng)計(jì)分析了這些年入百萬的python大佬所推薦的Python書單,花了很長(zhǎng)時(shí)間整理成電子書合集如下圖所示,需要的可以添加一行微信好友「yihangpy」直接領(lǐng)取哦~




        瀏覽 92
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            成人激情深爱网 | 精品国产91久久久久久暴行片 | 色综合大大 | 亚洲第一色 | 无码日韩人妻精品久久蜜桃 | 国产精品自拍性爱免费 | xxxx中国一级片 | 国产美女精品视频国产 | 日本大鸡巴视屏 | 不要播放器的av 玩中国小太正裸体视频 |