python制作圖片縮略圖
縮略圖
在很多時候我們都需要將圖片按照同比例縮小有利于存儲 但是一張張手動去改的話太麻煩了 今天我們就用python實現(xiàn)一個簡單的將一個文件夾中的所有圖片進行指定大小的調整
縮略前:
代碼:
import os import glob from PIL import Image def thumbnail_pic(path): #glob.glob(pathname),返回所有匹配的文件路徑列表 a=glob.glob(r'./img/*.jpg') for x in a: name=os.path.join(path,x) im=Image.open(name) im.thumbnail((80,80)) print(im.format,im.size,im.mode) im.save(name,'JPEG') print('Done!') if __name__=='__main__': path='.' thumbnail_pic(path)
縮略后:
參數(shù)使用說明:
1、os模塊,python的os模塊封裝了常見的文件和目錄操作。
2、PIL模塊中Image類thumbnail()方法可以用來制作縮略圖,它接受一個二元數(shù)組作為縮略圖的尺寸,然后將示例縮小到指定尺寸。
Image.resize()和Image.thumbnail()的區(qū)別
根據(jù)代碼和代碼注釋, 這兩個函數(shù)都是對圖片進行縮放, 兩者的主要區(qū)別如下:
- resize()函數(shù)會返回一個Image對象, thumbnail()函數(shù)返回None
- resize()修改后的圖片在返回的Image中, 而原圖片沒有被修改;
- thumbnail()直接對內(nèi)存中的原圖進行了修改, 但是修改需要保存
- resize()中的size參數(shù)直接設定了resize之后圖片的規(guī)格,而thumbnail()中的size參數(shù)則是設定了x/y上的最大值. 也就是說, 經(jīng)過resize()處理的圖片可能會被拉伸,而經(jīng)過thumbnail()處理的圖片不會被拉伸
- thumbnail()函數(shù)內(nèi)部調用了resize(), 可以認為thumbnail()是對resize()的一種封裝
使用scrapy爬蟲框架制作縮略圖
Images Pipeline為處理圖片提供了額外的功能:
- 將所有下載的圖片格式轉換成普通的JPG并使用RGB顏色模式
- 生成縮略圖
- 檢查圖片的寬度和高度確保它們滿足最小的尺寸限制
管道同時會在內(nèi)部保存一個被調度下載的URL列表,然后將包含相同媒體的相應關聯(lián)到這個隊列上來,從而防止了多個item共享這個媒體時重復下載。
ImagesPipeline使用Pillow來生成縮略圖以及轉換成標準的JPEG/RGB格式。因此你需要安裝這個包,我們建議你使用Pillow而不是PIL。
配置setting.py
# 同時使用圖片和文件管道 ITEM_PIPELINES = { 'scrapy.pipelines.images.ImagesPipeline': 1, 'scrapy.pipelines.files.FilesPipeline': 2, } # 指定圖片字段 IMAGES_URLS_FIELD = 'images' IMAGES_STORE = '/path/to/valid/dir' # 圖片存儲路徑 # 文件過期90天 FILES_EXPIRES = 90 # 圖像過期延遲30天 IMAGES_EXPIRES = 30 # 圖片縮略圖 IMAGES_THUMBS = { 'small': (50, 50), 'big': (270, 270), } # 圖片過濾器,最小高度和寬度 IMAGES_MIN_HEIGHT = 110 IMAGES_MIN_WIDTH = 110
pipeline.py文件
class YuehuiImagePipeline(ImagesPipeline): def item_completed(self, results, item, info): if results[0][0]: item['image_path'] = results[0][1]['path'] else: item['image_path'] = '' return item
items.py
class YuehuiItem(scrapy.Item): uid= scrapy.Field() height = scrapy.Field() weight = scrapy.Field() images = scrapy.Field() #頭像url字段 要求列表 在setting文件中配置 image_path = scrapy.Field()
以上為個人使用scrapy保存縮略圖的總結。
相關文章
Python中判斷subprocess調起的shell命令是否結束
這篇文章主要介紹了Python中判斷subprocess調起的shell命令是否結束的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04selenium + python 獲取table數(shù)據(jù)的示例講解
今天小編就為大家分享一篇selenium + python 獲取table數(shù)據(jù)的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10peewee創(chuàng)建連接前的前置操作wireshark抓包實現(xiàn)
這篇文章主要為大家介紹了peewee創(chuàng)建連接前的前置操作wireshark?抓包實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10python 列表遞歸求和、計數(shù)、求最大元素的實例
今天小編就為大家分享一篇python 列表遞歸求和、計數(shù)、求最大元素的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11Pyinstaller+Pipenv打包Python文件的實現(xiàn)示例
相信大家都試過將Python文件進行打包,本文主要介紹了Pyinstaller+Pipenv打包Python文件,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03