compress.py 913 B

12345678910111213141516171819202122232425262728293031323334
  1. from PIL import Image
  2. import numpy as np
  3. import cv2
  4. import io
  5. def compress_image(img: "np.ndarray", target_size: "int"):
  6. cur_size = img.shape[0] * img.shape[1]
  7. if cur_size <= target_size:
  8. return img
  9. image = Image.fromarray(img)
  10. output = io.BytesIO()
  11. image.save(output, format="JPEG", quality=int(target_size / cur_size * 100))
  12. output.seek(0)
  13. compressed_image = Image.open(output)
  14. return np.array(compressed_image)
  15. def main():
  16. input_path = r'C:\Users\huimv\Pictures\Saved Pictures\to-compress.jpg'
  17. max_size = 3800 * 1500 # 长 × 宽
  18. # 读取图像为NumPy数组
  19. image_array = cv2.imread(input_path)
  20. # 压缩图像
  21. compressed_image_array = compress_image(image_array, max_size)
  22. # 保存压缩后的图像
  23. output_path = 'img/compress-res.jpg'
  24. cv2.imwrite(output_path, compressed_image_array)
  25. if __name__ == "__main__":
  26. main()