package com.heyu.api.controller.imageenhan;


import com.aliyun.imageenhan20190930.models.ColorizeImageResponse;
import com.aliyun.imageenhan20190930.models.ColorizeImageResponseBody;
import com.heyu.api.alibaba.handle.imageenhan.AColorizeImageHandle;
import com.heyu.api.alibaba.request.imageenhan.AColorizeImageRequest;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.request.imageenhan.ColorizeImageReq;
import com.heyu.api.resp.imageenhan.ColorizeImageResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * https://next.api.aliyun.com/api/imageenhan/2019-09-30/ColorizeImage?tab=DOC&lang=JAVA&RegionId=cn-shanghai
 * <p>
 * <p>
 * <p>
 * 功能描述
 * 图片上色能力可以对黑白照片、黑白图像自动上色。 关于该接口功能的示例图如下：
 * 应用场景
 * 黑白老照片还原：上个世纪拍摄的黑白照片，可以通过图片上色，自动变成彩色照片。
 * 绘画自动上色：绘画作品、平面设计，通过图片上色，可以自动上色，加快生成效率。
 * 特色优势
 * 真实还原：真实还原照片中拍摄现场的色彩。
 * 适合各种场景：适合人物、风景、街景等各种拍摄场景。
 */
@Slf4j
@RestController
@RequestMapping("/image")
@NotIntercept
public class ColorizeImageController extends BaseController {

    @Autowired
    private AColorizeImageHandle colorizeImageHandle;


    @RequestMapping("/colorize")
    @CacheResult
    public R exposure(ColorizeImageReq req) {
        ColorizeImageResp resp = new ColorizeImageResp();

        AColorizeImageRequest request = new AColorizeImageRequest();
        request.setImageBase64(req.getImageBase64());
        request.setImageUrl(req.getImageUrl());


        ApiR<ColorizeImageResponse> aR = colorizeImageHandle.handle(request);
        if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
            ColorizeImageResponseBody.ColorizeImageResponseBodyData responseBodyData = aR.getData().getBody().getData();

            resp.setImageURL(responseBodyData.getImageURL());
            return R.ok().setData(resp);


        }
        return R.error(aR.getErrorMsg());
    }
}


