temp.py 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. # from PIL import Image
  2. # from settings import recordDataPoint
  3. import time,json
  4. import requests
  5. from PIL import Image
  6. import numpy as np
  7. from blend_modes import multiply
  8. from service.online_request.module_online_data import OnlineDataRequest,AIGCDataRequest
  9. # aigc = OnlineDataRequest("Bearer f99e72d818b504d23e0581ef1b1a2b4bb687c683")
  10. # aigc.uploadGoods2ThirdParty("",["惠利玛@拼多多"])
  11. # test = [{'catePathName': '流行男鞋>>休闲鞋>>时尚休闲鞋', 'itemName': '拖鞋女夏季新款外穿夹脚凉拖鞋时尚小香风eva厚底水钻休闲人字拖', 'itemNo': 'ANQ256005795', 'brandName': '惠利玛@拼多多', 'sellingPrice': 19.8, 'originalPrice': 19.8, 'quantity': 9999, 'propInfoList': [{'propName': '品牌', 'propIndex': 2, 'propValue': 'Vali'}, {'propName': '平台类目', 'propIndex': 3, 'propValue': '流行男鞋>>休闲鞋>>时尚休闲鞋'}], 'skuList': [{'颜色': '黑色', '尺寸': 37, 'skuPropName': '黑色', 'skuNo': 'ANQ25600579501', 'originalPrice': 19.8, 'newSkuWeight': 1, 'skuMainImageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361066013170.png', 'skuName': '颜色:黑色;尺寸:37', 'sellingPrice': 19.8, 'quantity': 9999, 'showOrder': 1, 'skuNameJson': [{'propName': '颜色', 'propValue': '黑色'}, {'propName': '尺寸', 'propValue': 37}]}], 'itemImageInfoList': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361066013170.png', 'imageType': 0, 'imageItem': 0, 'imageIndex': 10}], 'itemSkuImageList': [{'propName': '颜色', 'isImageProp': 1, 'propShowOrder': 1, 'skuPropValueList': [{'imageJson': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361066013170.png', 'imageType': 1, 'showOrder': 1}], 'propValue': '黑色', 'showOrder': 1}]}, {'propName': '尺寸', 'value': None, 'isImageProp': 0, 'propShowOrder': 1, 'showOrder': 0, 'propValue': 37}], 'wapDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361066656756.png"/>', 'pcDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361066656756.png"/>'}, {'catePathName': '流行男鞋>>休闲鞋>>时尚休闲鞋', 'itemName': '卡帝乐鳄鱼男士休闲运动鞋板鞋韩版反绒皮平跟秋冬款鞋一件代发', 'itemNo': 'ANQ254070718', 'brandName': '惠利玛@拼多多', 'sellingPrice': 118.0, 'originalPrice': 118.0, 'quantity': 9999, 'propInfoList': [{'propName': '品牌', 'propIndex': 2, 'propValue': 'Vali'}, {'propName': '平台类目', 'propIndex': 3, 'propValue': '流行男鞋>>休闲鞋>>时尚休闲鞋'}], 'skuList': [{'颜色': '黑色', '尺寸': 37, 'skuPropName': '黑色', 'skuNo': 'ANQ25407071801', 'originalPrice': 118.0, 'newSkuWeight': 1, 'skuMainImageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361066791498.png', 'skuName': '颜色:黑色;尺寸:37', 'sellingPrice': 118.0, 'quantity': 9999, 'showOrder': 1, 'skuNameJson': [{'propName': '颜色', 'propValue': '黑色'}, {'propName': '尺寸', 'propValue': 37}]}], 'itemImageInfoList': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361066791498.png', 'imageType': 0, 'imageItem': 0, 'imageIndex': 10}], 'itemSkuImageList': [{'propName': '颜色', 'isImageProp': 1, 'propShowOrder': 1, 'skuPropValueList': [{'imageJson': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361066791498.png', 'imageType': 1, 'showOrder': 1}], 'propValue': '黑色', 'showOrder': 1}]}, {'propName': '尺寸', 'value': None, 'isImageProp': 0, 'propShowOrder': 1, 'showOrder': 0, 'propValue': 37}], 'wapDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361067296104.png"/>', 'pcDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361067296104.png"/>'}, {'catePathName': '流行男鞋>>休闲鞋>>时尚休闲鞋', 'itemName': '冬皮毛一体三接头羊毛男士短靴皮靴高帮商务皮鞋潮男鞋男靴47大码', 'itemNo': 'ANQ156065213', 'brandName': '惠利玛@拼多多', 'sellingPrice': 122.5, 'originalPrice': 122.5, 'quantity': 9999, 'propInfoList': [{'propName': '品牌', 'propIndex': 2, 'propValue': 'Vali'}, {'propName': '平台类目', 'propIndex': 3, 'propValue': '流行男鞋>>休闲鞋>>时尚休闲鞋'}], 'skuList': [{'颜色': '经典系带黑色', '尺寸': 37, 'skuPropName': '经典系带黑色', 'skuNo': 'ANQ15606521301', 'originalPrice': 122.5, 'newSkuWeight': 1, 'skuMainImageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361067399791.png', 'skuName': '颜色:经典系带黑色;尺寸:37', 'sellingPrice': 122.5, 'quantity': 9999, 'showOrder': 1, 'skuNameJson': [{'propName': '颜色', 'propValue': '经典系带黑色'}, {'propName': '尺寸', 'propValue': 37}]}], 'itemImageInfoList': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361067399791.png', 'imageType': 0, 'imageItem': 0, 'imageIndex': 10}], 'itemSkuImageList': [{'propName': '颜色', 'isImageProp': 1, 'propShowOrder': 1, 'skuPropValueList': [{'imageJson': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361067399791.png', 'imageType': 1, 'showOrder': 1}], 'propValue': '经典系带黑色', 'showOrder': 1}]}, {'propName': '尺寸', 'value': None, 'isImageProp': 0, 'propShowOrder': 1, 'showOrder': 0, 'propValue': 37}], 'wapDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361067671806.png"/>', 'pcDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361067671806.png"/>'}, {'catePathName': '流行男鞋>>休闲鞋>>时尚休闲鞋', 'itemName': '拖鞋女夏季新款外穿夹脚凉拖鞋时尚小香风eva厚底水钻休闲人字拖', 'itemNo': 'ANQ256005795', 'brandName': '惠利玛@淘宝', 'sellingPrice': 19.8, 'originalPrice': 19.8, 'quantity': 9999, 'propInfoList': [{'propName': '品牌', 'propIndex': 2, 'propValue': 'Vali'}, {'propName': '平台类目', 'propIndex': 3, 'propValue': '流行男鞋>>休闲鞋>>时尚休闲鞋'}], 'skuList': [{'颜色': '黑色', '尺寸': 37, 'skuPropName': '黑色', 'skuNo': 'ANQ25600579501', 'originalPrice': 19.8, 'newSkuWeight': 1, 'skuMainImageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361067825893.png', 'skuName': '颜色:黑色;尺寸:37', 'sellingPrice': 19.8, 'quantity': 9999, 'showOrder': 1, 'skuNameJson': [{'propName': '颜色', 'propValue': '黑色'}, {'propName': '尺寸', 'propValue': 37}]}], 'itemImageInfoList': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361067825893.png', 'imageType': 0, 'imageItem': 0, 'imageIndex': 10}], 'itemSkuImageList': [{'propName': '颜色', 'isImageProp': 1, 'propShowOrder': 1, 'skuPropValueList': [{'imageJson': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361067825893.png', 'imageType': 1, 'showOrder': 1}], 'propValue': '黑色', 'showOrder': 1}]}, {'propName': '尺寸', 'value': None, 'isImageProp': 0, 'propShowOrder': 1, 'showOrder': 0, 'propValue': 37}], 'wapDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361068174891.png"/>', 'pcDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361068174891.png"/>'}, {'catePathName': '流行男鞋>>休闲鞋>>时尚休闲鞋', 'itemName': '卡帝乐鳄鱼男士休闲运动鞋板鞋韩版反绒皮平跟秋冬款鞋一件代发', 'itemNo': 'ANQ254070718', 'brandName': '惠利玛@淘宝', 'sellingPrice': 118.0, 'originalPrice': 118.0, 'quantity': 9999, 'propInfoList': [{'propName': '品牌', 'propIndex': 2, 'propValue': 'Vali'}, {'propName': '平台类目', 'propIndex': 3, 'propValue': '流行男鞋>>休闲鞋>>时尚休闲鞋'}], 'skuList': [{'颜色': '黑色', '尺寸': 37, 'skuPropName': '黑色', 'skuNo': 'ANQ25407071801', 'originalPrice': 118.0, 'newSkuWeight': 1, 'skuMainImageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361068222431.png', 'skuName': '颜色:黑色;尺寸:37', 'sellingPrice': 118.0, 'quantity': 9999, 'showOrder': 1, 'skuNameJson': [{'propName': '颜色', 'propValue': '黑色'}, {'propName': '尺寸', 'propValue': 37}]}], 'itemImageInfoList': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361068222431.png', 'imageType': 0, 'imageItem': 0, 'imageIndex': 10}], 'itemSkuImageList': [{'propName': '颜色', 'isImageProp': 1, 'propShowOrder': 1, 'skuPropValueList': [{'imageJson': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361068222431.png', 'imageType': 1, 'showOrder': 1}], 'propValue': '黑色', 'showOrder': 1}]}, {'propName': '尺寸', 'value': None, 'isImageProp': 0, 'propShowOrder': 1, 'showOrder': 0, 'propValue': 37}], 'wapDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361068575396.png"/>', 'pcDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361068575396.png"/>'}, {'catePathName': '流行男鞋>>休闲鞋>>时尚休闲鞋', 'itemName': '冬皮毛一体三接头羊毛男士短靴皮靴高帮商务皮鞋潮男鞋男靴47大码', 'itemNo': 'ANQ156065213', 'brandName': '惠利玛@淘宝', 'sellingPrice': 122.5, 'originalPrice': 122.5, 'quantity': 9999, 'propInfoList': [{'propName': '品牌', 'propIndex': 2, 'propValue': 'Vali'}, {'propName': '平台类目', 'propIndex': 3, 'propValue': '流行男鞋>>休闲鞋>>时尚休闲鞋'}], 'skuList': [{'颜色': '经典系带黑色', '尺寸': 37, 'skuPropName': '经典系带黑色', 'skuNo': 'ANQ15606521301', 'originalPrice': 122.5, 'newSkuWeight': 1, 'skuMainImageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361068665087.png', 'skuName': '颜色:经典系带黑色;尺寸:37', 'sellingPrice': 122.5, 'quantity': 9999, 'showOrder': 1, 'skuNameJson': [{'propName': '颜色', 'propValue': '经典系带黑色'}, {'propName': '尺寸', 'propValue': 37}]}], 'itemImageInfoList': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361068665087.png', 'imageType': 0, 'imageItem': 0, 'imageIndex': 10}], 'itemSkuImageList': [{'propName': '颜色', 'isImageProp': 1, 'propShowOrder': 1, 'skuPropValueList': [{'imageJson': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361068665087.png', 'imageType': 1, 'showOrder': 1}], 'propValue': '经典系带黑色', 'showOrder': 1}]}, {'propName': '尺寸', 'value': None, 'isImageProp': 0, 'propShowOrder': 1, 'showOrder': 0, 'propValue': 37}], 'wapDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361068963368.png"/>', 'pcDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361068963368.png"/>'}, {'catePathName': '流行男鞋>>休闲鞋>>时尚休闲鞋', 'itemName': '拖鞋女夏季新款外穿夹脚凉拖鞋时尚小香风eva厚底水钻休闲人字拖', 'itemNo': 'ANQ256005795', 'brandName': '惠利玛@速卖通', 'sellingPrice': 19.8, 'originalPrice': 19.8, 'quantity': 9999, 'propInfoList': [{'propName': '品牌', 'propIndex': 2, 'propValue': 'Vali'}, {'propName': '平台类目', 'propIndex': 3, 'propValue': '流行男鞋>>休闲鞋>>时尚休闲鞋'}], 'skuList': [{'颜色': '黑色', '尺寸': 37, 'skuPropName': '黑色', 'skuNo': 'ANQ25600579501', 'originalPrice': 19.8, 'newSkuWeight': 1, 'skuMainImageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069063783.png', 'skuName': '颜色:黑色;尺寸:37', 'sellingPrice': 19.8, 'quantity': 9999, 'showOrder': 1, 'skuNameJson': [{'propName': '颜色', 'propValue': '黑色'}, {'propName': '尺寸', 'propValue': 37}]}], 'itemImageInfoList': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069063783.png', 'imageType': 0, 'imageItem': 0, 'imageIndex': 10}], 'itemSkuImageList': [{'propName': '颜色', 'isImageProp': 1, 'propShowOrder': 1, 'skuPropValueList': [{'imageJson': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069063783.png', 'imageType': 1, 'showOrder': 1}], 'propValue': '黑色', 'showOrder': 1}]}, {'propName': '尺寸', 'value': None, 'isImageProp': 0, 'propShowOrder': 1, 'showOrder': 0, 'propValue': 37}], 'wapDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069376668.png"/>', 'pcDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069376668.png"/>'}, {'catePathName': '流行男鞋>>休闲鞋>>时尚休闲鞋', 'itemName': '卡帝乐鳄鱼男士休闲运动鞋板鞋韩版反绒皮平跟秋冬款鞋一件代发', 'itemNo': 'ANQ254070718', 'brandName': '惠利玛@速卖通', 'sellingPrice': 118.0, 'originalPrice': 118.0, 'quantity': 9999, 'propInfoList': [{'propName': '品牌', 'propIndex': 2, 'propValue': 'Vali'}, {'propName': '平台类目', 'propIndex': 3, 'propValue': '流行男鞋>>休闲鞋>>时尚休闲鞋'}], 'skuList': [{'颜色': '黑色', '尺寸': 37, 'skuPropName': '黑色', 'skuNo': 'ANQ25407071801', 'originalPrice': 118.0, 'newSkuWeight': 1, 'skuMainImageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069590767.png', 'skuName': '颜色:黑色;尺寸:37', 'sellingPrice': 118.0, 'quantity': 9999, 'showOrder': 1, 'skuNameJson': [{'propName': '颜色', 'propValue': '黑色'}, {'propName': '尺寸', 'propValue': 37}]}], 'itemImageInfoList': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069590767.png', 'imageType': 0, 'imageItem': 0, 'imageIndex': 10}], 'itemSkuImageList': [{'propName': '颜色', 'isImageProp': 1, 'propShowOrder': 1, 'skuPropValueList': [{'imageJson': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069590767.png', 'imageType': 1, 'showOrder': 1}], 'propValue': '黑色', 'showOrder': 1}]}, {'propName': '尺寸', 'value': None, 'isImageProp': 0, 'propShowOrder': 1, 'showOrder': 0, 'propValue': 37}], 'wapDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069824484.png"/>', 'pcDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069824484.png"/>'}, {'catePathName': '流行男鞋>>休闲鞋>>时尚休闲鞋', 'itemName': '冬皮毛一体三接头羊毛男士短靴皮靴高帮商务皮鞋潮男鞋男靴47大码', 'itemNo': 'ANQ156065213', 'brandName': '惠利玛@速卖通', 'sellingPrice': 122.5, 'originalPrice': 122.5, 'quantity': 9999, 'propInfoList': [{'propName': '品牌', 'propIndex': 2, 'propValue': 'Vali'}, {'propName': '平台类目', 'propIndex': 3, 'propValue': '流行男鞋>>休闲鞋>>时尚休闲鞋'}], 'skuList': [{'颜色': '经典系带黑色', '尺寸': 37, 'skuPropName': '经典系带黑色', 'skuNo': 'ANQ15606521301', 'originalPrice': 122.5, 'newSkuWeight': 1, 'skuMainImageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069931810.png', 'skuName': '颜色:经典系带黑色;尺寸:37', 'sellingPrice': 122.5, 'quantity': 9999, 'showOrder': 1, 'skuNameJson': [{'propName': '颜色', 'propValue': '经典系带黑色'}, {'propName': '尺寸', 'propValue': 37}]}], 'itemImageInfoList': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069931810.png', 'imageType': 0, 'imageItem': 0, 'imageIndex': 10}], 'itemSkuImageList': [{'propName': '颜色', 'isImageProp': 1, 'propShowOrder': 1, 'skuPropValueList': [{'imageJson': [{'imageUrl': 'https://ossimg.valimart.net/uploads/vali_ai/20251120/176361069931810.png', 'imageType': 1, 'showOrder': 1}], 'propValue': '经典系带黑色', 'showOrder': 1}]}, {'propName': '尺寸', 'value': None, 'isImageProp': 0, 'propShowOrder': 1, 'showOrder': 0, 'propValue': 37}], 'wapDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361070221711.png"/>', 'pcDescription': '<img src="https://ossimg.valimart.net/uploads/vali_ai/20251120/176361070221711.png"/>'}]
  12. # js = json.dumps(test)
  13. # print(js)
  14. # from service.customer_template_service import CustomerTemplateService
  15. # service = CustomerTemplateService()
  16. # config_data = json.load(open("detail_template_test_xinnuo.json", mode="r", encoding="utf-8"))
  17. # canvas_json = json.load(open("canvas_json.json", mode="r", encoding="utf-8"))
  18. # service.generateTemplate(config_data,canvas_json,'test-template',r"C:/Development/project/output/2025-12-05/详情图-测试")
  19. def hex_to_rgb(hex_color):
  20. """
  21. 将十六进制颜色值转换为RGB值
  22. """
  23. hex_color = hex_color.lstrip('#')
  24. if len(hex_color) == 6:
  25. return tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4))
  26. elif len(hex_color) == 3:
  27. return tuple(int(hex_color[i:i+1]*2, 16) for i in (0, 1, 2))
  28. else:
  29. raise ValueError("无效的十六进制颜色值")
  30. def color_name_to_rgb(color_name):
  31. """
  32. 将颜色名称转换为RGB值
  33. """
  34. color_map = {
  35. 'red': (255, 0, 0),
  36. 'green': (0, 255, 0),
  37. 'blue': (0, 0, 255),
  38. 'white': (255, 255, 255),
  39. 'black': (0, 0, 0),
  40. 'yellow': (255, 255, 0),
  41. 'cyan': (0, 255, 255),
  42. 'magenta': (255, 0, 255),
  43. 'orange': (255, 165, 0),
  44. 'purple': (128, 0, 128),
  45. 'pink': (255, 192, 203),
  46. 'brown': (165, 42, 42),
  47. 'gray': (128, 128, 128),
  48. 'grey': (128, 128, 128),
  49. 'lightgray': (211, 211, 211),
  50. 'darkgray': (169, 169, 169),
  51. 'lightblue': (173, 216, 230),
  52. 'lightgreen': (144, 238, 144),
  53. 'lightyellow': (255, 255, 224)
  54. }
  55. if color_name.lower() in color_map:
  56. return color_map[color_name.lower()]
  57. else:
  58. raise ValueError(f"未找到颜色名称: {color_name}")
  59. def create_color_overlay(size, color):
  60. """
  61. 创建指定颜色的覆盖层
  62. :param size: 图片尺寸 (width, height)
  63. :param color: 颜色值,可以是以下格式之一:
  64. - RGB元组: (R, G, B) 如 (255, 0, 0) 表示红色
  65. - RGBA元组: (R, G, B, A) 如 (255, 0, 0, 128)
  66. - 十六进制字符串: "#FF0000" 表示红色
  67. - 颜色名称: "red", "blue", "green" 等
  68. :return: PIL Image对象
  69. """
  70. # 如果是十六进制颜色值,转换为RGB
  71. if isinstance(color, str):
  72. if color.startswith('#'):
  73. color = hex_to_rgb(color)
  74. else:
  75. # 使用预定义的颜色名称
  76. color = color_name_to_rgb(color)
  77. # 如果是RGB或RGBA元组
  78. if isinstance(color, (tuple, list)):
  79. if len(color) == 3: # RGB
  80. overlay = Image.new('RGBA', size, color + (255,))
  81. elif len(color) == 4: # RGBA
  82. overlay = Image.new('RGBA', size, tuple(map(int, color)))
  83. else:
  84. raise ValueError("颜色元组应包含3个(RGB)或4个(RGBA)值")
  85. else:
  86. raise ValueError("颜色值格式不正确")
  87. return overlay
  88. def multiply_blend_multiple_colors(img1_path, img2_path, output_path,
  89. colors=None, positions=None, blend_opacity=1.0):
  90. """
  91. 对两张图片进行正片叠底处理,可以应用多个颜色区域
  92. :param img1_path: 第一张图片路径(底层图片)
  93. :param img2_path: 第二张图片路径(顶层图片)
  94. :param output_path: 输出图片路径
  95. :param colors: 颜色列表,每个颜色可以是RGB元组、十六进制颜色或颜色名称
  96. :param positions: 位置列表,每个位置是 (x, y, width, height) 的元组
  97. :param blend_opacity: 混合透明度 (0.0-1.0)
  98. """
  99. # 打开图片
  100. img1 = Image.open(img1_path).convert('RGBA')
  101. img2 = Image.open(img2_path).convert('RGBA')
  102. # 调整图片大小
  103. if img1.size != img2.size:
  104. img2 = img2.resize(img1.size, Image.LANCZOS)
  105. # 转换为numpy数组
  106. img1_array = np.array(img1, dtype=np.float64)
  107. img2_array = np.array(img2, dtype=np.float64)
  108. # 如果提供了颜色和位置信息
  109. if colors and positions:
  110. for color, pos in zip(colors, positions):
  111. # 创建颜色覆盖层
  112. color_size = (pos[2], pos[3]) # width, height
  113. color_overlay = create_color_overlay(color_size, color)
  114. # 将颜色覆盖层应用到指定位置
  115. img2_array[pos[1]:pos[1]+pos[3], pos[0]:pos[0]+pos[2]] = \
  116. np.array(color_overlay, dtype=np.float64)
  117. # 使用blend_modes库进行正片叠底
  118. blended_img = multiply(img1_array, img2_array, blend_opacity)
  119. # 转换回PIL Image对象
  120. blended_img = np.clip(blended_img, 0, 255).astype(np.uint8)
  121. result = Image.fromarray(blended_img, mode='RGBA')
  122. # 保存结果
  123. result.save(output_path)
  124. print(f"多颜色正片叠底完成,结果保存至: {output_path}")
  125. return result
  126. def multiply_blend_with_color(imagePng,imageJpg, output_path, color=None,
  127. color_opacity=0.5, blend_opacity=1.0):
  128. """
  129. 对两张图片进行正片叠底处理,可以应用指定颜色
  130. :param img1_path: 第一张图片路径(底层图片)
  131. :param img2_path: 第二张图片路径(顶层图片)
  132. :param output_path: 输出图片路径
  133. :param color: 要应用的颜色,可以是RGB元组、十六进制颜色或颜色名称
  134. :param color_opacity: 颜色层的透明度 (0.0-1.0)
  135. :param blend_opacity: 正片叠底层的透明度 (0.0-1.0)
  136. """
  137. imagePng:Image
  138. imageJpg:Image
  139. # 调整图片大小
  140. if imagePng.size != imageJpg.size:
  141. imageJpg = imageJpg.resize(imagePng.size, Image.LANCZOS)
  142. # 如果指定了颜色,创建颜色覆盖层
  143. if color is not None:
  144. # 创建颜色覆盖层
  145. color_overlay = create_color_overlay(imageJpg.size, color)
  146. # 将颜色层与第二张图片混合
  147. imageJpg_array = np.array(imageJpg, dtype=np.float64)
  148. color_array = np.array(color_overlay, dtype=np.float64)
  149. # 混合颜色层与图片
  150. mixed_array = imageJpg_array * (1 - color_opacity) + color_array * color_opacity
  151. imageJpg = Image.fromarray(np.clip(mixed_array, 0, 255).astype(np.uint8), mode='RGBA')
  152. # 转换为numpy数组
  153. imagePng_array = np.array(imagePng, dtype=np.float64)
  154. imageJpg_array = np.array(imageJpg, dtype=np.float64)
  155. # 使用blend_modes库进行正片叠底
  156. blended_img = multiply(imagePng_array, imageJpg_array, blend_opacity)
  157. # 转换回PIL Image对象
  158. blended_img = np.clip(blended_img, 0, 255).astype(np.uint8)
  159. result = Image.fromarray(blended_img, mode='RGBA')
  160. # 保存结果
  161. result.save(output_path)
  162. print(f"正片叠底完成,结果保存至: {output_path}")
  163. return result
  164. # 示例用法
  165. if __name__ == "__main__":
  166. # 示例1:使用RGB颜色值
  167. imagePng = Image.open("C:/Development/project/output/2025-12-24/AQG1411283/阴影图处理/AQG1411283(1)_俯视_抠图.png")
  168. imageJpg = Image.open("C:/Development/project/output/2025-12-24/AQG1411283/阴影图处理/AQG1411283(1)_俯视_阴影.png")
  169. multiply_blend_with_color(
  170. imagePng=imagePng, # 替换为您的图片路径
  171. imageJpg=imageJpg, # 替换为您的图片路径
  172. output_path="output_rgb.png",
  173. color="#FF00AA", # 红色
  174. color_opacity=1, # 颜色透明度
  175. blend_opacity=0.8 # 正片叠底透明度
  176. )