utils.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import base64
  2. from io import BytesIO
  3. from PIL import Image, features
  4. import pillow_avif
  5. import requests
  6. def image_to_base(image_path):
  7. with open(image_path, 'rb') as image_file:
  8. image_base = base64.b64encode(image_file.read()).decode('utf-8')
  9. return image_base
  10. def pil_image_to_base64(image, format="JPEG"):
  11. """将图像转换为Base64的编码字符串"""
  12. buffered = BytesIO()
  13. image.save(buffered, format=format)
  14. return base64.b64encode(buffered.getvalue()).decode("utf-8")
  15. def load_image_from_url(image_url):
  16. """根据url加载图像"""
  17. headers = {
  18. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",
  19. "Referer": "https://www.aliexpress.com/",
  20. "Accept-Language": "en-US,en;q=0.9",
  21. }
  22. response = requests.get(image_url, headers=headers)
  23. image = Image.open(BytesIO(response.content))
  24. return image
  25. def load_image_from_cos(cos_url):
  26. """下载腾讯云COS的AVIF文件,并转换为可处理的图像数据"""
  27. try:
  28. response = requests.get(cos_url)
  29. response.raise_for_status() # 检查请求是否成功
  30. img = Image.open(BytesIO(response.content))
  31. return img
  32. except requests.exceptions.RequestException as e:
  33. raise requests.exceptions.RequestException(f"下载失败:{e}")
  34. except Exception as e:
  35. raise ValueError(f"解析AVIF失败:{e}")
  36. if __name__ == "__main__":
  37. url = 'https://img.alicdn.com/imgextra/i1/2212526294503/O1CN01P0qxZL1j8QU5cC4ed_!!2212526294503.jpg_q75.jpg_.webp'
  38. image = load_image_from_url(url)
  39. image.save('./product.png') # 保存为PNG
  40. # cos_url = "https://dev-govern-private-1251740668.cos.ap-guangzhou.myqcloud.com/private/20250723/b9c411c4c2514367afc4dd4ad199eb0d.webp?q-sign-algorithm=sha1&q-ak=AKIDIWXN4kqgpiMm0z4T5VgcKn4KSP8cZwnO&q-sign-time=1753320960%3B1753328160&q-key-time=1753320960%3B1753328160&q-header-list=host&q-url-param-list=&q-signature=f6223c1353c1c97c8e42355625dec94967c9c2f6"
  41. # image = load_image_from_cos(cos_url)
  42. # image.save('./product.png')