mongodb怎麼存圖片
利用mongodb儲存圖片通常有兩種方法,一種是將圖片資料轉化為二進位制作為字典的鍵值對進行儲存,另一種是利用mongodb提供的
GridFS進行儲存,兩者各有利弊。效能方面的優劣未曾測試,無法進行評價,此處僅對兩種方式進行介紹,若有徹知者還望指教。
下面以如下資料作為示例進行介紹:
資料示例
dic = { "owner_name" : "samssmilin", "photo_id" : "602880671", "tags" : "", "longitude" : "-121.106479", "height" : "766", "datetaken" : "2004-01-17 21:05:35", "width" : "1024", "length" : 38141, "photo_title" : "Dad and Elijah", "latitude" : "35.565222", "photo_url" : "", "dateupload" : "1075355967", "owner_id" : "45365637@N00" }
一、GridFS
GridFS將圖片資料與圖片屬性資料分開儲存,用chunks來儲存圖片資料,files儲存屬性資料,一個圖片file可能對應多個chunks,每個
chunk的記憶體大小固定(16M),若圖片資料大於chunk,則分為多個chunk儲存,用同一個ObjectID關聯,下載時自動將多個chunk合
併為圖片資料。
上傳
from pymongo import MongoClient from gridfs import * import requests client = MongoClient('127.0.0.1', 27017) #連線mongodb db = client.photo #連線對應資料庫 #db.authenticate("username","passowd") fs = GridFS(db, collection="images") #連線collection data = requests.get(dic["photo_url"], timeout=10).content # 確認資料庫中不存在此圖片之後再儲存 if not fs.find_one({"photo_url":dic["photo_url"]}): fs.put(data, **dic) # 上傳成功後,photo資料庫下出現兩個collection,分別為: images.files, images.chunks12345678910111213
下載
from pymongo import MongoClient from gridfs import * client = MongoClient('127.0.0.1', 27017) #連線mongodb db = client.photo #連線對應資料庫 #db.authenticate("username","passowd") fs = GridFS(db, collection="images") #連線collection num = 1 for grid_out in fs.find(no_cursor_timeout=True): data = grid_out.read() # 獲取圖片資料 outf = open('/home/%d.jpg'%num,'wb') outf.write(data) #儲存圖片 outf.close() if num%100000 == 0 metadata_file = open("/home/metadata%d.csv"%(num/100000+1), "ab") csv_writer = csv.writer(metadata_file,delimiter='t') row = [grid_out.photo_title.encode('utf-8'), grid_out.uploadDate, grid_out.upload_date, grid_out.longitude, grid_out.latitude, grid_out.width, grid_out.height, grid_out.owner_name.encode('utf-8'), grid_out.photo_id, grid_out._id, grid_out.photo_url] csv_writer.writerow(row)12345678910111213141516171819
bson二進位制
這種方法將圖片資料作為鍵值對放入字典與屬性資料作為整體存入資料庫中。
上傳程式碼如下:
from bson import binary from pymongo import MongoClient client = MongoClient('127.0.0.1', 27017) #連線mongodb db = client.photo #連線對應資料庫 image_collection = db.images data = requests.get(dic["photo_url"], timeout=10).content # 確認資料庫中不存在此圖片之後再儲存 if not image_collection.find_one({"photo_url":dic["photo_url"]}) dic["imagecontent"] = binary.Binary(data) image_collection.insert(dic)1234567891011
推薦學習《》。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3349/viewspace-2834477/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Acrobat怎麼批量儲存PDF小圖片?adobe Acrobat一鍵儲存pdf小圖片的技巧BAT
- Acrobat怎麼批次儲存PDF小圖片?adobe Acrobat一鍵儲存pdf小圖片的技巧BAT
- 怎麼轉換圖片格式並壓縮圖片
- 儲存圖片
- 圖片怎麼轉換成PDF,圖片轉PDF教程
- 圖片heic怎麼轉換jpg?
- Activiti 儲存圖片
- 為什麼不用資料庫儲存圖片?資料庫
- 教程:怎麼轉換heic格式圖片
- heic圖片轉換格式怎麼轉?
- 圖片文字識別怎麼實現
- 怎麼替換公司網站圖片網站
- 美圖秀秀怎麼給圖片新增背景?美圖秀秀給圖片新增背景的教程
- 怎麼使用圖片管理這個外掛
- 圖片區域性識別怎麼操作
- heic格式的圖片安卓怎麼開啟安卓
- 怎麼把圖片文字轉換成word?
- php qrcode不生成圖片怎麼辦PHP
- 圖片下面出現空白怎麼解決
- 公司網站的圖片怎麼更換網站
- 怎麼替換公司網站圖片資訊網站
- 網站後臺修改圖片新聞?公司網站圖片怎麼修改?網站
- .9圖怎麼切?iOS如何處理這種圖片iOS
- 如何免費識別圖片文字?圖片文字識別軟體怎麼用
- 怎麼旋轉圖片?BenVista PhotoZoom Pro旋轉圖片的方法OOM
- windows10圖片檢視器無法開啟圖片怎麼解決Windows
- asp.net儲存圖片ASP.NET
- 儲存圖片到SD卡SD卡
- Matlab GUI儲存圖片MatlabGUI
- 圖片格式怎麼轉換,如何轉換jpg
- 圖片怎麼優化的8個小技巧優化
- 用手機怎麼把圖片轉換成PDF
- 手機圖片轉換成excel怎麼操作?Excel
- 怎麼將pdf轉換成jpg圖片格式
- iOS實現點選圖片放大&長按儲存圖片iOS
- cdr怎麼檢視圖片縮圖win10_cdr如何檢視圖片縮圖win10Win10
- win10怎麼改圖片格式 win10系統如何更改圖片格式Win10
- win10怎麼改圖片型別 windows10如何更改圖片型別Win10型別Windows