feat 新增图片亮度提高接口

fix
This commit is contained in:
zhouchengrong
2024-08-28 16:39:39 +08:00
parent 14ff063f87
commit 70b05a7beb
3 changed files with 75 additions and 0 deletions

65
app/api/api_brighten.py Normal file
View File

@@ -0,0 +1,65 @@
import io
import json
import logging
import time
from PIL import ImageEnhance
from fastapi import APIRouter, HTTPException
from app.schemas.brighten import BrightenModel
from app.schemas.response_template import ResponseModel
from app.service.utils.oss_client import oss_get_image, oss_upload_image
router = APIRouter()
logger = logging.getLogger()
def increase_brightness(img, factor):
enhancer = ImageEnhance.Brightness(img)
bright_img = enhancer.enhance(factor)
return bright_img
@router.post("/brighten")
async def brighten(request_item: BrightenModel):
"""
创建一个具有以下参数的请求体:
- **image_url**: 提亮图片url
- **brighten_value**: 提高亮度的比重 亮度因子 1.0 表示原始亮度1.5 表示增加 50% 的亮度
- **brighten_bucket**: 结果图保存的bucket
- **brighten_name**: 结果图保存的object name
示例参数:
{
"image_url": "aida-users/89/relight_image/3850e17b-3efd-4597-90ef-2a7bcd1a1a0b-0-89.png",
"brighten_value": 1.5,
"brighten_bucket": "test",
"brighten_name": "12341556-89.jpg"
}
"""
try:
start_time = time.time()
logger.info(f"brighten request item is : @@@@@@:{json.dumps(request_item.dict())}")
image = oss_get_image(bucket=request_item.image_url.split('/')[0], object_name=request_item.image_url[request_item.image_url.find('/') + 1:], data_type="PIL")
new_image = increase_brightness(image, request_item.brighten_value)
image_data = io.BytesIO()
new_image.save(image_data, format='PNG')
image_data.seek(0)
image_bytes = image_data.read()
req = oss_upload_image(bucket=request_item.brighten_bucket, object_name=request_item.brighten_name, image_bytes=image_bytes)
brighten_url = f"{req.bucket_name}/{req.object_name}"
logger.info(f"run time is : {time.time() - start_time}")
except Exception as e:
logger.warning(f"brighten Run Exception @@@@@@:{e}")
raise HTTPException(status_code=404, detail=str(e))
return ResponseModel(data=brighten_url)
if __name__ == '__main__':
request_item = BrightenModel(image_url="aida-users/89/relight_image/3850e17b-3efd-4597-90ef-2a7bcd1a1a0b-0-89.png",
brighten_value=1.5,
brighten_bucket="test",
brighten_name="12341556-89.png")
image = oss_get_image(bucket=request_item.image_url.split('/')[0], object_name=request_item.image_url[request_item.image_url.find('/') + 1:], data_type="PIL")
new_image = increase_brightness(image, request_item.brighten_value)
new_image.show()

View File

@@ -1,6 +1,7 @@
from fastapi import APIRouter
from app.api import api_attribute_retrieve
from app.api import api_brighten
from app.api import api_chat_robot
from app.api import api_design
from app.api import api_design_pre_processing
@@ -21,3 +22,4 @@ router.include_router(api_chat_robot.router, tags=['chat_robot'], prefix="/api")
router.include_router(api_prompt_generation.router, tags=['prompt_generation'], prefix="/api")
router.include_router(api_design_pre_processing.router, tags=['design_pre_processing'], prefix="/api")
router.include_router(api_image2sketch.router, tags=['api_image2sketch'], prefix="/api")
router.include_router(api_brighten.router, tags=['api_brighten'], prefix="/api")

8
app/schemas/brighten.py Normal file
View File

@@ -0,0 +1,8 @@
from pydantic import BaseModel
class BrightenModel(BaseModel):
image_url: str
brighten_value: float
brighten_bucket: str
brighten_name: str