2019-02-25
Python 將 Base64 字串還原為圖片
markdown
## 取得 Base64 格式
從網站取得
```
import base64
img_data_base64 = request.POST.get("img_data")
img_b64decode = base64.b64decode(img_data_base64)
```
從檔案取得 Base64 然後將 base64 再解碼
```
import base64
img_file = open(r'image.jpg','rb')
img_b64encode = base64.b64encode(img_file.read())
img_file.close()
img_b64decode = base64.b64decode(img_b64encode)
```
# Python 圖片 Base64 解碼還原 PIL.Image 或 Opencv
Base64 解碼為 OpenCV 圖片:
```
import base64
import numpy as np
img_data_base64= request.POST.get("img_data")
img_data=base64.b64decode(img_data_base64)
img_array = np.fromstring(img_data,np.uint8)
img=cv2.imdecode(img_array,cv2.COLOR_BGR2RGB)
cv2.imshow("img",img)
cv2.waitKey()
```
Base64 解碼為 PIL.Image 圖片:
```
from io import BytesIO
from PIL import Image #pillow
img_data_base64= request.POST.get("img_data")
img_data=base64.b64decode(img_data_base64)
image = BytesIO(img_data)
img = Image.open(image)
```
OpenCV 轉換成 PIL.Image 格式:
```
import cv2
from PIL import Image
import numpy as np
img = cv2.imread("image.jpg")
cv2.imshow("OpenCV",img)
image = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))
image.show()
cv2.waitKey()
```
PIL.Image 轉換成 OpenCV 格式:
```
import cv2
from PIL import Image
import numpy as np
image = Image.open("image.jpg")
image.show()
img = cv2.cvtColor(np.asarray(image),cv2.COLOR_RGB2BGR)
cv2.imshow("OpenCV",img)
cv2.waitKey()
```
參考資料來源:
https://blog.csdn.net/dcrmg/article/details/80542665
https://blog.csdn.net/qq_19707521/article/details/78403904
https://blog.csdn.net/qq_19707521/article/details/78367617
2019-01-28
Python Import the class within the same directory or sub directory
markdown
# 引用同一資料夾中的類別
假設有已有如下的資料結構,在 myfolder 中有 Order, Product, User, Manager 四個 class,要引用到 main.py 中使用。
```
myfolder
+-- main.py
+-- subdir
| +-- order.py
| +-- product.py
+-- user.py
+-- manager.py
```
## Python 2
建立一個名為 `__init__.py` 的空檔案,放在同一個資料夾中
在 main.py 中
```
from user import User
from manager import Manager
```
資料夾範例:
```
myfolder
+-- main.py
+-- subdir
| +-- order.py
| +-- product.py
+-- __init__.py
+-- user.py
+-- manager.py
```
如果是要引用子目錄中的類別,則是在子目錄中建立 `__init__.py`
```
from subdir.order import Order
from subdir.product import Product
```
子資料夾範例:
```
myfolder
+-- main.py
+-- subdir
| +-- __init__.py
| +-- order.py
| +-- product.py
+-- user.py
+-- manager.py
```
## Python 3
在同一目錄下引用直接使用 .user,參考如下:
在 main.py 中
```
from .user import User
from .manager import Manager
```
資料夾範例:
```
myfolder
+-- main.py
+-- subdir
| +-- order.py
| +-- product.py
+-- __init__.py
+-- user.py
+-- manager.py
```
訂閱:
文章 (Atom)