1. 程式人生 > >Python3 Image圖片webp格式轉換,URL Image Byte位元組流操作

Python3 Image圖片webp格式轉換,URL Image Byte位元組流操作

前言

首先圖片格式轉換的方法有很多,但是轉圖片位元組流的,我搜了一下午終於在 stackoverflow上搜到了
說一下為什麼要線上轉這個圖片格式
額,一名Python3 spider, 需求要爬去文章,並且把裡面的圖片,上傳到七牛雲上面,
意思就是,圖片不需要下載到本地,爬取到圖片url後,讀取圖片位元組流資料,然後上傳到自己七牛雲上面,並且替換其格式(這一點很坑)

  • 上傳圖片二進位制資料到七牛雲上面不難, 照著七牛雲API文件基本就能行,有一點很坑,七牛雲官方文件Python API 賊雞兒坑,上面的Demo全是,上傳本地圖片的put_file()方法,我要上傳遠端伺服器上面的,沒看到對應的方法。
  • 準備修改qiniu SDK原始碼的,看到了一個put_data()方法能傳位元組流資料。
好我寫這篇博文重點來了

需求:由於我爬取的圖片遠端是google的 .webp格式的圖片, 連結是https://xxxx.webp這種,而這個格式又不能直接修改後綴改。

於是我去網上搜Python3 圖片格式轉換的方法。
最多的就是這種方法

 from PIL import Image   # 安裝pillow 有些小坑  對了我的版本是Pillow==4.3.0
 im = Image.open("./demo1.jpg")
 im.save("./demo2.png")

但是我要上傳的檔案都不在本地,都是請求圖片二進位制流線上修改圖片字尾。
二話不說直接亮程式碼吧,虧我找了一下午,還在pillow的github上提問。終於在stackoverflow上搜到了。

import io
from PIL import Image  # 注意我的Image版本是pip3 install Pillow==4.3.0
import requests

res = requests.get('http://p1.pstatp.com/list/300x196/pgc-image/152923179745640a81b1fdc.webp', stream=True)  # 獲取位元組流最好加stream這個引數,原因見requests官方文件

byte_stream = io.BytesIO(res.content)  # 把請求到的資料轉換為Bytes位元組流(這樣解釋不知道對不對,可以參照[廖雪峰](https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431918785710e86a1a120ce04925bae155012c7fc71e000)的教程看一下)
roiImg = Image.open(byte_stream) # Image開啟Byte位元組流資料 imgByteArr = io.BytesIO() # 建立一個空的Bytes物件 roiImg.save(imgByteArr, format='PNG') # PNG就是圖片格式,我試過換成JPG/jpg都不行 imgByteArr = imgByteArr.getvalue() # 這個就是儲存的圖片位元組流 # 下面這一步只是本地測試, 可以直接把imgByteArr,當成引數上傳到七牛雲 with open("./abc.png", "wb") as f: f.write(imgByteArr)

我感覺我這個線上轉換的絕對是CSDN第一篇, 搜了一下午,人都搜絕望了。
還是 stackoverflow 好用, 這個連結就是我搜到答案。

最後希望能幫助到有需求的人,不懂的可以評論留言,有時間就會解答的。

相關推薦

Python3 Image圖片webp格式轉換URL Image Byte位元組操作

前言 首先圖片格式轉換的方法有很多,但是轉圖片位元組流的,我搜了一下午終於在 stackoverflow上搜到了 說一下為什麼要線上轉這個圖片格式 額,一名Python3 spider, 需求要爬去文

常用的Emgu CV程式碼(主要有圖片格式轉換圖片裁剪圖片翻轉圖片旋轉和圖片平移等功能)

轉載自部落格 using System; using System.Drawing; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; namespace ZNLGIS { public class Im

微信小程序 Image 圖片實現寬度100%高度自適應

高度自適應 nbsp src 小程序 設置 hello clas 自適應 mode 做法如下: 樣式設置寬度100%, .img{ width:100%;} 添加屬性 mode="widthFix", <image class="img" src="../../ima

Extjs 時間格式轉換有幫忙看看的嗎

分享 png img inf bsp nbsp http 格式 com 一直沒轉換成功,求幫忙。Extjs 時間格式轉換,有幫忙看看的嗎

matlab裡的影象格式轉換矩陣型別unit8與double

1、uint8與double double函式只是將讀入影象的uint8資料轉換為double型別,一般不使用;常用的是im2double函式,將 uint8影象轉為double型別,範圍為0-1,如果是255的影象,那麼255轉為1,0還是0,中間

ffmpeg對yuv視訊格式轉換剪下

最近用到yuv視訊做資料集,需要對原視訊進行一系列處理,記錄下來以備檢視。 源資料是yuv444p的,需要轉成yuv420p; 命令:ffmpeg -s 1280*720 -pix_fmt yuv444p -i input.yuv -pix_fmt yuv420p outp

ajax請求當傳送post方式application/json格式資料url後面又帶有引數的時候

var url="${pageContext.request.contextPath}/json/jsonTest.do?idl=123&id=111"; $.ajax( {type : "POST", url : url, contentType:"application/jso

微信小程式-Image 圖片實現寬度100%高度自適應

大家好,今天在做微信小程式的商品詳情頁,商品的詳情是圖片集合,渲染完成後發現圖片載入的很不自然,如下圖所示: 大家發現是不是比較模糊並且有壓縮,不能達到預期效果。 解決方法如下: 樣式設定寬度100% .img{   width: 100%;

php base64格式轉換url並存儲到伺服器指定目錄

<?php header('Content-type:text/html;charset=utf-8'); $base64_image_content = $_POST['imgBase64']; //匹配出圖片的格式 if (preg_match('/^(data:\s*im

Android Studio中圖片格式轉換

1.從指定路徑獲得圖片字串 public static String GetImageStr(String filePath) {//將圖片檔案轉化為位元組陣列字串,並對其進行Base64編碼處理 String imgFile = filePath;//待處理的圖

matlab把圖片pgm格式轉換成png格式

http://blog.csdn.net/chenbang110/article/details/7591576 Path0 = uigetdir('..\ORL人臉庫', '請在當前資料夾下選擇人臉識別圖片庫' );   T=40;     %共40類   TN=

fsb,fev檔案格式轉換提取與打包

http://bbs.duowan.com/thread-30327245-1-1.html http://www.douban.com/doulist/2003329/ http://www.fmod.org/download/#FMODExAPIDownloads 發現

JAVA呼叫GDAL實現影像格式轉換以tif to jpg為例

前言 本文簡單實現java呼叫GDAL實現影像格式轉換。 package Marcus.com; import org.gdal.gdal.Dataset; import org.gdal.gdal.Driver; import org.g

Matlab批量實現圖片檔案格式轉換

for n=0:1673   str1='G:\obj\';str2=num2str(n);str3='.png'; SC=[str1,str2,str3];              i=imrea

Python3下OpenCV影象格式轉換方法

   OpenCV影象格式是BGR,和我們日常RGB影象顏色通道不一致,恰好相反。雖然顏色通道不一致, 但每個顏色通道的值是沒有問題的,如果解析出來,重新組合,就能轉換成RGB格式影象了。     下面的程式碼,test_probelm是觀察效果。而method1、metho

位元組接受鍵盤輸入後寫入檔案並以緩衝位元組複製檔案

一、程式碼及解釋 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.File

瀏覽器無法載入本地檔案在後臺讀取位元組後返回給前端顯示

由於安全性考慮,許多瀏覽器不允許訪問本地檔案。 用谷歌瀏覽器開啟html時,img的src賦值如F:/XXX/XXX/**.jpg,console顯示no allowed to load local resourses 1. 將src改為file:///F:/XXX形式,依

圖片轉換base64格式data:image/png;base64是什麼?

一、我們在看程式碼時經常在img或css背景圖片中看到: src=”data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOus bgAAAAeFBMVEUAwAD///+U5ZTc9twO

centos下 將(jgp、png)圖片轉換webp格式

sys 安裝 學習 isa 幫助 webp格式 system pos ini 由於項目要求需要將jpg、png類型的圖片 轉換成webp格式,最開始使用了php gd類庫裏 imagewebp 方法實現,結果發現轉換成的webp格式文件會偶爾出現空白內容的情況。像

使用python將seq轉換為影象image格式

需要修改的 rootdir = "set資料夾的路徑\set01" import os.path import fnmatch import shutil   def open_save(file,savepath):     # read .seq file, a