python将图片压缩后再转成base64编码并在前端显示

由于图片分页都展示原图的ip访问会导致加载速度过慢,因此将图片的缩略图转成base64编码在前端展示,加载速度提高了几十倍。

将图片读入后直接转成base64编码:

import base64
with open('Sample.jpg','rb') as f:
    base64_data = base64.b64encode(f.read())
f.close()

base64_data_str = str(base64_data)
base64_head = 'data:image/jpg;base64,'
fname = base64_head + base64_data_str[2:-1]
print("原图base64编码长度:%d"%len(fname)) #760506

按照一定比例进行缩略,这里按照高度为240通过openCV进行调整图片的大小:

import base64
import cv2
img = cv2.('Sample.jpg')
h,w,_ = img.shape
img_resize = imutils.resize(img, height=240)
image = cv2.imencode('.jpg',img_resize)[1]
image_code = base64_head+str(base64.b64encode(image))[2:-1]
print("openCV调整图像尺寸后base64长度:%d"%len(image_code))
print(image_code)

其运行结果如下:
python将图片压缩后再转成base64编码并在前端显示_第1张图片
可以看出,编码长度缩短了很多,原图尺寸越大,缩短得越多,如果前端只有显示缩略图的需求,即固定高度,则无需要将原图的base64编码。

写一个简单的HTML测试一下缩略后的base64编码展示图片功能。

python将图片压缩后再转成base64编码并在前端显示_第2张图片

python将图片压缩后再转成base64编码并在前端显示_第3张图片
测试没有问题!

你可能感兴趣的:(python,前端,开发语言)