<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 1070字,需瀏覽 3分鐘

           ·

          2021-11-05 10:09

          大家好,我是一行

          最近因為工作,經常需要在網站提交一些文件和圖片

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

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

          而且在線壓縮的網站也有上限大小,不然就收費,不然就收費,不然就收費

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

          1原理

          仔細分析了一下,圖片壓縮的原理其實很簡單

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

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

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


          2代碼塊

          簡單壓縮

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

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

          下面這張結果圖,顯然壓縮過到我都認出來的情況

          from?PIL?import?Image

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

          進階壓縮

          進一步修改壓縮的代碼,可以設定壓縮圖片的目標大小

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

          def?compress_image(infile,?outfile='',?mb=1500,?step=10,?quality=80):
          ????"""不改變圖片尺寸壓縮到指定大小
          ????:param?infile:?壓縮源文件
          ????:param?outfile:?壓縮文件保存地址
          ????:param?mb:?壓縮目標,KB
          ????:param?step:?每次調整的壓縮比率
          ????:param?quality:?初始壓縮比率
          ????: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,肉眼也是看不出來有什么明顯差別,妥妥可以提交到網站上了

          3最后

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

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

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

          居然還聊起來了

          所以說,對于個人信息安全還是需要保持謹慎

          我是一行,技術用不眠,我們下期見~



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




          瀏覽 92
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产无码第一页 | 中文资源在线天堂的功能介绍 | 亚洲乱码国产乱码午夜 | www.国产免费 | 欧美成人精品一区二区三区免费 |