由于服务器带宽太小,网站图片加载的太慢了,所以不得不给图片添加缩略图来做显示,点击查看以后再显示大图。图片比较多,就用opencv
来个批量的转换了:
import cv2
import os
def generateThumbnails(path):
# 整个文件夹路径下的图片生成方形缩略图
dirs = os.listdir(path)
thumbnailsPath = path + "/Thumbnails"
for dir in dirs:
if os.path.splitext(dir)[1]== ".jpg":
img = cv2.imread(path+"/"+dir)
height = img.shape[0] # 图片高度
width = img.shape[1] # 图片宽度
# 裁剪图片为正方形 (按照短边裁剪,因为有的图片竖着,有的横着)
rct = height if height<=width else width # 选取短边
marginLeft = int((width - rct)/2) # 截取的横边距
marginTop = int((height - rct)/2) # 截取的纵边距
img1 = img[marginTop:marginTop + rct,marginLeft:marginLeft + rct]
# 截取图片的正中间部分(数组前一组为数直方向取像素,后一组为横轴方向取像素)
img2 = cv2.resize(img1,(100,100)) # 生成图片的大小修改为 100*100
if(not os.path.exists(thumbnailsPath)):
os.makedirs(thumbnailsPath)
cv2.imwrite(thumbnailsPath+"/"+dir,img2)
if __name__ == '__main__':
path = "E:/myblogweb/src/main/resources/static/source/photosIcon" # 文件夹名
generateThumbnails(path)
功能为将jpg
图片处理成100*100
的缩略图存储在Thumbnails
文件夹下。
如果不需要方形,直接等比缩小,就直接resize
就行了:
import cv2
import os
def generateThumbnails(path):
dirs = os.listdir(path)
thumbnailsPath = path + "/Thumbnails"
for dir in dirs:
if os.path.splitext(dir)[1]== ".jpg":
img = cv2.imread(path+"/"+dir)
height = img.shape[0] # 图片高度
width = img.shape[1] # 图片宽度
img1 = cv2.resize(img,(100,int(100/width*height)))
if(not os.path.exists(thumbnailsPath)):
os.makedirs(thumbnailsPath)
cv2.imwrite(thumbnailsPath+"/"+dir,img1)
if __name__ == '__main__':
path = "E:/myblogweb/src/main/resources/static/source/photosIcon"
generateThumbnails(path)