mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-11-01 03:25:35 +08:00 
			
		
		
		
	🆕 #1685 小程序增加图像处理相关接口
This commit is contained in:
		| @ -1,9 +1,9 @@ | |||||||
| package me.chanjar.weixin.mp.api; | package me.chanjar.weixin.common.api; | ||||||
| 
 | 
 | ||||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||||
| import me.chanjar.weixin.mp.bean.imgproc.WxMpImgProcAiCropResult; | import me.chanjar.weixin.common.bean.imgproc.WxImgProcAiCropResult; | ||||||
| import me.chanjar.weixin.mp.bean.imgproc.WxMpImgProcQrCodeResult; | import me.chanjar.weixin.common.bean.imgproc.WxImgProcQrCodeResult; | ||||||
| import me.chanjar.weixin.mp.bean.imgproc.WxMpImgProcSuperResolutionResult; | import me.chanjar.weixin.common.bean.imgproc.WxImgProcSuperResolutionResult; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| 
 | 
 | ||||||
| @ -13,7 +13,7 @@ import java.io.File; | |||||||
|  * |  * | ||||||
|  * @author Theo Nie |  * @author Theo Nie | ||||||
|  */ |  */ | ||||||
| public interface WxMpImgProcService { | public interface WxImgProcService { | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * 二维码/条码识别接口 |    * 二维码/条码识别接口 | ||||||
| @ -27,7 +27,7 @@ public interface WxMpImgProcService { | |||||||
|    * @return WxMpImgProcQrCodeResult |    * @return WxMpImgProcQrCodeResult | ||||||
|    * @throws WxErrorException . |    * @throws WxErrorException . | ||||||
|    */ |    */ | ||||||
|   WxMpImgProcQrCodeResult qrCode(String imgUrl) throws WxErrorException; |   WxImgProcQrCodeResult qrCode(String imgUrl) throws WxErrorException; | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * 二维码/条码识别接口 |    * 二维码/条码识别接口 | ||||||
| @ -41,7 +41,7 @@ public interface WxMpImgProcService { | |||||||
|    * @return WxMpImgProcQrCodeResult |    * @return WxMpImgProcQrCodeResult | ||||||
|    * @throws WxErrorException . |    * @throws WxErrorException . | ||||||
|    */ |    */ | ||||||
|   WxMpImgProcQrCodeResult qrCode(File imgFile) throws WxErrorException; |   WxImgProcQrCodeResult qrCode(File imgFile) throws WxErrorException; | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * 图片高清化接口 |    * 图片高清化接口 | ||||||
| @ -55,7 +55,7 @@ public interface WxMpImgProcService { | |||||||
|    * @return WxMpImgProcSuperResolutionResult |    * @return WxMpImgProcSuperResolutionResult | ||||||
|    * @throws WxErrorException . |    * @throws WxErrorException . | ||||||
|    */ |    */ | ||||||
|   WxMpImgProcSuperResolutionResult superResolution(String imgUrl) throws WxErrorException; |   WxImgProcSuperResolutionResult superResolution(String imgUrl) throws WxErrorException; | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * 图片高清化接口 |    * 图片高清化接口 | ||||||
| @ -69,7 +69,7 @@ public interface WxMpImgProcService { | |||||||
|    * @return WxMpImgProcSuperResolutionResult |    * @return WxMpImgProcSuperResolutionResult | ||||||
|    * @throws WxErrorException . |    * @throws WxErrorException . | ||||||
|    */ |    */ | ||||||
|   WxMpImgProcSuperResolutionResult superResolution(File imgFile) throws WxErrorException; |   WxImgProcSuperResolutionResult superResolution(File imgFile) throws WxErrorException; | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * 图片智能裁剪接口 |    * 图片智能裁剪接口 | ||||||
| @ -81,7 +81,7 @@ public interface WxMpImgProcService { | |||||||
|    * @return WxMpImgProcAiCropResult |    * @return WxMpImgProcAiCropResult | ||||||
|    * @throws WxErrorException . |    * @throws WxErrorException . | ||||||
|    */ |    */ | ||||||
|   WxMpImgProcAiCropResult aiCrop(String imgUrl) throws WxErrorException; |   WxImgProcAiCropResult aiCrop(String imgUrl) throws WxErrorException; | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * 图片智能裁剪接口 |    * 图片智能裁剪接口 | ||||||
| @ -93,7 +93,7 @@ public interface WxMpImgProcService { | |||||||
|    * @return WxMpImgProcAiCropResult |    * @return WxMpImgProcAiCropResult | ||||||
|    * @throws WxErrorException . |    * @throws WxErrorException . | ||||||
|    */ |    */ | ||||||
|   WxMpImgProcAiCropResult aiCrop(String imgUrl, String ratios) throws WxErrorException; |   WxImgProcAiCropResult aiCrop(String imgUrl, String ratios) throws WxErrorException; | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * 图片智能裁剪接口 |    * 图片智能裁剪接口 | ||||||
| @ -105,7 +105,7 @@ public interface WxMpImgProcService { | |||||||
|    * @return WxMpImgProcAiCropResult |    * @return WxMpImgProcAiCropResult | ||||||
|    * @throws WxErrorException . |    * @throws WxErrorException . | ||||||
|    */ |    */ | ||||||
|   WxMpImgProcAiCropResult aiCrop(File imgFile) throws WxErrorException; |   WxImgProcAiCropResult aiCrop(File imgFile) throws WxErrorException; | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * 图片智能裁剪接口 |    * 图片智能裁剪接口 | ||||||
| @ -117,5 +117,5 @@ public interface WxMpImgProcService { | |||||||
|    * @return WxMpImgProcAiCropResult |    * @return WxMpImgProcAiCropResult | ||||||
|    * @throws WxErrorException . |    * @throws WxErrorException . | ||||||
|    */ |    */ | ||||||
|   WxMpImgProcAiCropResult aiCrop(File imgFile, String ratios) throws WxErrorException; |   WxImgProcAiCropResult aiCrop(File imgFile, String ratios) throws WxErrorException; | ||||||
| } | } | ||||||
| @ -1,8 +1,8 @@ | |||||||
| package me.chanjar.weixin.mp.bean.imgproc; | package me.chanjar.weixin.common.bean.imgproc; | ||||||
| 
 | 
 | ||||||
| import com.google.gson.annotations.SerializedName; | import com.google.gson.annotations.SerializedName; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | import me.chanjar.weixin.common.util.json.WxGsonBuilder; | ||||||
| 
 | 
 | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -11,50 +11,59 @@ import java.util.List; | |||||||
|  * @author Theo Nie |  * @author Theo Nie | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class WxMpImgProcAiCropResult implements Serializable { | public class WxImgProcAiCropResult implements Serializable { | ||||||
|   private static final long serialVersionUID = -6470673963772979463L; |   private static final long serialVersionUID = -6470673963772979463L; | ||||||
| 
 | 
 | ||||||
|   @SerializedName("img_size") |   @SerializedName("img_size") | ||||||
|   private ImgSize imgSize; |   private ImgSize imgSize; | ||||||
|  | 
 | ||||||
|   @SerializedName("results") |   @SerializedName("results") | ||||||
|   private List<Results> results; |   private List<Results> results; | ||||||
| 
 | 
 | ||||||
|   @Override |   @Override | ||||||
|   public String toString() { |   public String toString() { | ||||||
|     return WxMpGsonBuilder.create().toJson(this); |     return WxGsonBuilder.create().toJson(this); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public static WxMpImgProcAiCropResult fromJson(String json) { |   public static WxImgProcAiCropResult fromJson(String json) { | ||||||
|     return WxMpGsonBuilder.create().fromJson(json, WxMpImgProcAiCropResult.class); |     return WxGsonBuilder.create().fromJson(json, WxImgProcAiCropResult.class); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Data |   @Data | ||||||
|   public static class ImgSize { |   public static class ImgSize implements Serializable { | ||||||
|  |     private static final long serialVersionUID = -6470673963772979463L; | ||||||
|  | 
 | ||||||
|     @SerializedName("w") |     @SerializedName("w") | ||||||
|     private int w; |     private int w; | ||||||
|  | 
 | ||||||
|     @SerializedName("h") |     @SerializedName("h") | ||||||
|     private int h; |     private int h; | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public String toString() { |     public String toString() { | ||||||
|       return WxMpGsonBuilder.create().toJson(this); |       return WxGsonBuilder.create().toJson(this); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Data |   @Data | ||||||
|   public static class Results { |   public static class Results implements Serializable { | ||||||
|  |     private static final long serialVersionUID = -6470673963772979463L; | ||||||
|  | 
 | ||||||
|     @SerializedName("crop_left") |     @SerializedName("crop_left") | ||||||
|     private int cropLeft; |     private int cropLeft; | ||||||
|  | 
 | ||||||
|     @SerializedName("crop_top") |     @SerializedName("crop_top") | ||||||
|     private int cropTop; |     private int cropTop; | ||||||
|  | 
 | ||||||
|     @SerializedName("crop_right") |     @SerializedName("crop_right") | ||||||
|     private int cropRight; |     private int cropRight; | ||||||
|  | 
 | ||||||
|     @SerializedName("crop_bottom") |     @SerializedName("crop_bottom") | ||||||
|     private int cropBottom; |     private int cropBottom; | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public String toString() { |     public String toString() { | ||||||
|       return WxMpGsonBuilder.create().toJson(this); |       return WxGsonBuilder.create().toJson(this); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @ -1,28 +1,31 @@ | |||||||
| package me.chanjar.weixin.mp.bean.imgproc; | package me.chanjar.weixin.common.bean.imgproc; | ||||||
| 
 | 
 | ||||||
| import com.google.gson.annotations.SerializedName; | import com.google.gson.annotations.SerializedName; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | import me.chanjar.weixin.common.util.json.WxGsonBuilder; | ||||||
| 
 | 
 | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 二维码/条码识别返回结果 |  * 二维码/条码识别返回结果 | ||||||
|  |  * | ||||||
|  * @author Theo Nie |  * @author Theo Nie | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class WxMpImgProcQrCodeResult implements Serializable { | public class WxImgProcQrCodeResult implements Serializable { | ||||||
| 
 |  | ||||||
|   private static final long serialVersionUID = -1194154790100866123L; |   private static final long serialVersionUID = -1194154790100866123L; | ||||||
|  | 
 | ||||||
|   @SerializedName("img_size") |   @SerializedName("img_size") | ||||||
|   private ImgSize imgSize; |   private ImgSize imgSize; | ||||||
|  | 
 | ||||||
|   @SerializedName("code_results") |   @SerializedName("code_results") | ||||||
|   private List<CodeResults> codeResults; |   private List<CodeResults> codeResults; | ||||||
| 
 | 
 | ||||||
|   @Data |   @Data | ||||||
|   public static class ImgSize implements Serializable{ |   public static class ImgSize implements Serializable { | ||||||
|     private static final long serialVersionUID = -8847603245514017839L; |     private static final long serialVersionUID = -8847603245514017839L; | ||||||
|  | 
 | ||||||
|     @SerializedName("w") |     @SerializedName("w") | ||||||
|     private int w; |     private int w; | ||||||
|     @SerializedName("h") |     @SerializedName("h") | ||||||
| @ -30,64 +33,71 @@ public class WxMpImgProcQrCodeResult implements Serializable { | |||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public String toString() { |     public String toString() { | ||||||
|       return WxMpGsonBuilder.create().toJson(this); |       return WxGsonBuilder.create().toJson(this); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Data |   @Data | ||||||
|   public static class CodeResults implements Serializable{ |   public static class CodeResults implements Serializable { | ||||||
|     private static final long serialVersionUID = -6138135951229076759L; |     private static final long serialVersionUID = -6138135951229076759L; | ||||||
|  | 
 | ||||||
|     @SerializedName("type_name") |     @SerializedName("type_name") | ||||||
|     private String typeName; |     private String typeName; | ||||||
|  | 
 | ||||||
|     @SerializedName("data") |     @SerializedName("data") | ||||||
|     private String data; |     private String data; | ||||||
|  | 
 | ||||||
|     @SerializedName("pos") |     @SerializedName("pos") | ||||||
|     private Pos pos; |     private Pos pos; | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public String toString() { |     public String toString() { | ||||||
|       return WxMpGsonBuilder.create().toJson(this); |       return WxGsonBuilder.create().toJson(this); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Data |     @Data | ||||||
|     public static class Pos implements Serializable{ |     public static class Pos implements Serializable { | ||||||
|       private static final long serialVersionUID = 7754894061212819602L; |       private static final long serialVersionUID = 7754894061212819602L; | ||||||
|       @SerializedName("left_top") |       @SerializedName("left_top") | ||||||
|       private Coordinate leftTop; |       private Coordinate leftTop; | ||||||
|  | 
 | ||||||
|       @SerializedName("right_top") |       @SerializedName("right_top") | ||||||
|       private Coordinate rightTop; |       private Coordinate rightTop; | ||||||
|  | 
 | ||||||
|       @SerializedName("right_bottom") |       @SerializedName("right_bottom") | ||||||
|       private Coordinate rightBottom; |       private Coordinate rightBottom; | ||||||
|  | 
 | ||||||
|       @SerializedName("left_bottom") |       @SerializedName("left_bottom") | ||||||
|       private Coordinate leftBottom; |       private Coordinate leftBottom; | ||||||
| 
 | 
 | ||||||
|       @Override |       @Override | ||||||
|       public String toString() { |       public String toString() { | ||||||
|         return WxMpGsonBuilder.create().toJson(this); |         return WxGsonBuilder.create().toJson(this); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       @Data |       @Data | ||||||
|       public static class Coordinate implements Serializable{ |       public static class Coordinate implements Serializable { | ||||||
|         private static final long serialVersionUID = 8930443668927359677L; |         private static final long serialVersionUID = 8930443668927359677L; | ||||||
|         @SerializedName("x") |         @SerializedName("x") | ||||||
|         private int x; |         private int x; | ||||||
|  | 
 | ||||||
|         @SerializedName("y") |         @SerializedName("y") | ||||||
|         private int y; |         private int y; | ||||||
| 
 | 
 | ||||||
|         @Override |         @Override | ||||||
|         public String toString() { |         public String toString() { | ||||||
|           return WxMpGsonBuilder.create().toJson(this); |           return WxGsonBuilder.create().toJson(this); | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public static WxMpImgProcQrCodeResult fromJson(String json) { |   public static WxImgProcQrCodeResult fromJson(String json) { | ||||||
|     return WxMpGsonBuilder.create().fromJson(json, WxMpImgProcQrCodeResult.class); |     return WxGsonBuilder.create().fromJson(json, WxImgProcQrCodeResult.class); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Override |   @Override | ||||||
|   public String toString() { |   public String toString() { | ||||||
|     return WxMpGsonBuilder.create().toJson(this); |     return WxGsonBuilder.create().toJson(this); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @ -0,0 +1,28 @@ | |||||||
|  | package me.chanjar.weixin.common.bean.imgproc; | ||||||
|  |  | ||||||
|  | import com.google.gson.annotations.SerializedName; | ||||||
|  | import lombok.Data; | ||||||
|  | import me.chanjar.weixin.common.util.json.WxGsonBuilder; | ||||||
|  |  | ||||||
|  | import java.io.Serializable; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 图片高清化返回结果 | ||||||
|  |  * @author Theo Nie | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class WxImgProcSuperResolutionResult implements Serializable { | ||||||
|  |   private static final long serialVersionUID = 8007440280170407021L; | ||||||
|  |  | ||||||
|  |   @SerializedName("media_id") | ||||||
|  |   private String mediaId; | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public String toString() { | ||||||
|  |     return WxGsonBuilder.create().toJson(this); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public static WxImgProcSuperResolutionResult fromJson(String json) { | ||||||
|  |     return WxGsonBuilder.create().fromJson(json, WxImgProcSuperResolutionResult.class); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -2,6 +2,7 @@ package cn.binarywang.wx.miniapp.api; | |||||||
|  |  | ||||||
| import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | ||||||
| import cn.binarywang.wx.miniapp.config.WxMaConfig; | import cn.binarywang.wx.miniapp.config.WxMaConfig; | ||||||
|  | import me.chanjar.weixin.common.api.WxImgProcService; | ||||||
| import me.chanjar.weixin.common.api.WxOcrService; | import me.chanjar.weixin.common.api.WxOcrService; | ||||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||||
| import me.chanjar.weixin.common.service.WxService; | import me.chanjar.weixin.common.service.WxService; | ||||||
| @ -295,4 +296,12 @@ public interface WxMaService extends WxService { | |||||||
|    * @return 。 |    * @return 。 | ||||||
|    */ |    */ | ||||||
|   WxOcrService getOcrService(); |   WxOcrService getOcrService(); | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 返回图像处理接口的实现类对象,以方便调用其各个接口. | ||||||
|  |    * | ||||||
|  |    * @return WxImgProcService | ||||||
|  |    */ | ||||||
|  |   WxImgProcService getImgProcService(); | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -8,6 +8,7 @@ import com.google.common.collect.ImmutableMap; | |||||||
| import com.google.gson.Gson; | import com.google.gson.Gson; | ||||||
| import com.google.gson.JsonObject; | import com.google.gson.JsonObject; | ||||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||||
|  | import me.chanjar.weixin.common.api.WxImgProcService; | ||||||
| import me.chanjar.weixin.common.enums.WxType; | import me.chanjar.weixin.common.enums.WxType; | ||||||
| import me.chanjar.weixin.common.api.WxOcrService; | import me.chanjar.weixin.common.api.WxOcrService; | ||||||
| import me.chanjar.weixin.common.bean.WxAccessToken; | import me.chanjar.weixin.common.bean.WxAccessToken; | ||||||
| @ -59,6 +60,7 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH | |||||||
|   private final WxMaLiveService liveService = new WxMaLiveServiceImpl(this); |   private final WxMaLiveService liveService = new WxMaLiveServiceImpl(this); | ||||||
|   private final WxMaLiveGoodsService liveGoodsService = new WxMaLiveGoodsServiceImpl(this); |   private final WxMaLiveGoodsService liveGoodsService = new WxMaLiveGoodsServiceImpl(this); | ||||||
|   private final WxOcrService ocrService = new WxMaOcrServiceImpl(this); |   private final WxOcrService ocrService = new WxMaOcrServiceImpl(this); | ||||||
|  |   private final WxImgProcService imgProcService = new WxMaImgProcServiceImpl(this); | ||||||
|  |  | ||||||
|   private int retrySleepMillis = 1000; |   private int retrySleepMillis = 1000; | ||||||
|   private int maxRetryTimes = 5; |   private int maxRetryTimes = 5; | ||||||
| @ -408,4 +410,9 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH | |||||||
|     return this.ocrService; |     return this.ocrService; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public WxImgProcService getImgProcService() { | ||||||
|  |     return this.imgProcService; | ||||||
|  |   } | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,131 @@ | |||||||
|  | package cn.binarywang.wx.miniapp.api.impl; | ||||||
|  |  | ||||||
|  | import cn.binarywang.wx.miniapp.api.WxMaService; | ||||||
|  | import lombok.RequiredArgsConstructor; | ||||||
|  | import me.chanjar.weixin.common.api.WxImgProcService; | ||||||
|  | import me.chanjar.weixin.common.bean.imgproc.WxImgProcAiCropResult; | ||||||
|  | import me.chanjar.weixin.common.bean.imgproc.WxImgProcQrCodeResult; | ||||||
|  | import me.chanjar.weixin.common.bean.imgproc.WxImgProcSuperResolutionResult; | ||||||
|  | import me.chanjar.weixin.common.error.WxErrorException; | ||||||
|  | import me.chanjar.weixin.common.requestexecuter.ocr.OcrDiscernRequestExecutor; | ||||||
|  | import org.apache.commons.lang3.StringUtils; | ||||||
|  |  | ||||||
|  | import java.io.File; | ||||||
|  | import java.io.UnsupportedEncodingException; | ||||||
|  | import java.net.URLEncoder; | ||||||
|  | import java.nio.charset.StandardCharsets; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 图像处理接口实现. | ||||||
|  |  * | ||||||
|  |  * @author Theo Nie | ||||||
|  |  */ | ||||||
|  | @RequiredArgsConstructor | ||||||
|  | public class WxMaImgProcServiceImpl implements WxImgProcService { | ||||||
|  |   /** | ||||||
|  |    * 二维码/条码识别 | ||||||
|  |    */ | ||||||
|  |   private static final String QRCODE = "/cv/img/qrcode?img_url=%s"; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 二维码/条码识别(文件) | ||||||
|  |    */ | ||||||
|  |   private static final String FILE_QRCODE = "/cv/img/qrcode"; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 图片高清化 | ||||||
|  |    */ | ||||||
|  |   private static final String SUPER_RESOLUTION = "/cv/img/superresolution?img_url=%s"; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 图片高清化(文件) | ||||||
|  |    */ | ||||||
|  |   private static final String FILE_SUPER_RESOLUTION = "/cv/img/superresolution"; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 图片智能裁剪 | ||||||
|  |    */ | ||||||
|  |   private static final String AI_CROP = "/cv/img/aicrop?img_url=%s&ratios=%s"; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 图片智能裁剪(文件) | ||||||
|  |    */ | ||||||
|  |   private static final String FILE_AI_CROP = "/cv/img/aicrop?ratios=%s"; | ||||||
|  |   private final WxMaService service; | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public WxImgProcQrCodeResult qrCode(String imgUrl) throws WxErrorException { | ||||||
|  |     try { | ||||||
|  |       imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); | ||||||
|  |     } catch (UnsupportedEncodingException e) { | ||||||
|  |       //ignore | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     final String result = this.service.get(String.format(QRCODE, imgUrl), null); | ||||||
|  |     return WxImgProcQrCodeResult.fromJson(result); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public WxImgProcQrCodeResult qrCode(File imgFile) throws WxErrorException { | ||||||
|  |     String result = this.service.execute(OcrDiscernRequestExecutor.create(this.service.getRequestHttp()), | ||||||
|  |       FILE_QRCODE, imgFile); | ||||||
|  |     return WxImgProcQrCodeResult.fromJson(result); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public WxImgProcSuperResolutionResult superResolution(String imgUrl) throws WxErrorException { | ||||||
|  |     try { | ||||||
|  |       imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); | ||||||
|  |     } catch (UnsupportedEncodingException e) { | ||||||
|  |       //ignore | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     final String result = this.service.get(String.format(SUPER_RESOLUTION, imgUrl), null); | ||||||
|  |     return WxImgProcSuperResolutionResult.fromJson(result); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public WxImgProcSuperResolutionResult superResolution(File imgFile) throws WxErrorException { | ||||||
|  |     String result = this.service.execute(OcrDiscernRequestExecutor.create(this.service.getRequestHttp()), | ||||||
|  |       FILE_SUPER_RESOLUTION, imgFile); | ||||||
|  |     return WxImgProcSuperResolutionResult.fromJson(result); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public WxImgProcAiCropResult aiCrop(String imgUrl) throws WxErrorException { | ||||||
|  |     return this.aiCrop(imgUrl, ""); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public WxImgProcAiCropResult aiCrop(String imgUrl, String ratios) throws WxErrorException { | ||||||
|  |     try { | ||||||
|  |       imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); | ||||||
|  |     } catch (UnsupportedEncodingException e) { | ||||||
|  |       //ignore | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if (StringUtils.isEmpty(ratios)) { | ||||||
|  |       ratios = ""; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     final String result = this.service.get(String.format(AI_CROP, imgUrl, ratios), null); | ||||||
|  |     return WxImgProcAiCropResult.fromJson(result); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public WxImgProcAiCropResult aiCrop(File imgFile) throws WxErrorException { | ||||||
|  |     return this.aiCrop(imgFile, ""); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public WxImgProcAiCropResult aiCrop(File imgFile, String ratios) throws WxErrorException { | ||||||
|  |     if (StringUtils.isEmpty(ratios)) { | ||||||
|  |       ratios = ""; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     String result = this.service.execute(OcrDiscernRequestExecutor.create(this.service.getRequestHttp()), | ||||||
|  |       String.format(FILE_AI_CROP, ratios), imgFile); | ||||||
|  |     return WxImgProcAiCropResult.fromJson(result); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -1,5 +1,6 @@ | |||||||
| package me.chanjar.weixin.mp.api; | package me.chanjar.weixin.mp.api; | ||||||
|  |  | ||||||
|  | import me.chanjar.weixin.common.api.WxImgProcService; | ||||||
| import me.chanjar.weixin.common.api.WxOcrService; | import me.chanjar.weixin.common.api.WxOcrService; | ||||||
| import me.chanjar.weixin.common.bean.WxJsapiSignature; | import me.chanjar.weixin.common.bean.WxJsapiSignature; | ||||||
| import me.chanjar.weixin.common.bean.WxNetCheckResult; | import me.chanjar.weixin.common.bean.WxNetCheckResult; | ||||||
| @ -561,9 +562,9 @@ public interface WxMpService extends WxService { | |||||||
|   /** |   /** | ||||||
|    * 返回图像处理接口的实现类对象,以方便调用其各个接口. |    * 返回图像处理接口的实现类对象,以方便调用其各个接口. | ||||||
|    * |    * | ||||||
|    * @return WxMpImgProcService |    * @return WxImgProcService | ||||||
|    */ |    */ | ||||||
|   WxMpImgProcService getImgProcService(); |   WxImgProcService getImgProcService(); | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * . |    * . | ||||||
| @ -696,7 +697,7 @@ public interface WxMpService extends WxService { | |||||||
|    * |    * | ||||||
|    * @param imgProcService . |    * @param imgProcService . | ||||||
|    */ |    */ | ||||||
|   void setImgProcService(WxMpImgProcService imgProcService); |   void setImgProcService(WxImgProcService imgProcService); | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * 返回评论数据管理接口方法的实现类对象,以方便调用其各个接口. |    * 返回评论数据管理接口方法的实现类对象,以方便调用其各个接口. | ||||||
|  | |||||||
| @ -7,6 +7,7 @@ import com.google.gson.JsonObject; | |||||||
| import lombok.Getter; | import lombok.Getter; | ||||||
| import lombok.Setter; | import lombok.Setter; | ||||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||||
|  | import me.chanjar.weixin.common.api.WxImgProcService; | ||||||
| import me.chanjar.weixin.common.enums.WxType; | import me.chanjar.weixin.common.enums.WxType; | ||||||
| import me.chanjar.weixin.common.api.WxOcrService; | import me.chanjar.weixin.common.api.WxOcrService; | ||||||
| import me.chanjar.weixin.common.bean.WxAccessToken; | import me.chanjar.weixin.common.bean.WxAccessToken; | ||||||
| @ -71,7 +72,7 @@ public abstract class BaseWxMpServiceImpl<H, P> implements WxMpService, RequestH | |||||||
|   private WxMpMarketingService marketingService = new WxMpMarketingServiceImpl(this); |   private WxMpMarketingService marketingService = new WxMpMarketingServiceImpl(this); | ||||||
|   private WxMpCommentService commentService = new WxMpCommentServiceImpl(this); |   private WxMpCommentService commentService = new WxMpCommentServiceImpl(this); | ||||||
|   private WxOcrService ocrService = new WxMpOcrServiceImpl(this); |   private WxOcrService ocrService = new WxMpOcrServiceImpl(this); | ||||||
|   private WxMpImgProcService imgProcService = new WxMpImgProcServiceImpl(this); |   private WxImgProcService imgProcService = new WxMpImgProcServiceImpl(this); | ||||||
|  |  | ||||||
|   @Getter |   @Getter | ||||||
|   @Setter |   @Setter | ||||||
| @ -696,12 +697,12 @@ public abstract class BaseWxMpServiceImpl<H, P> implements WxMpService, RequestH | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public WxMpImgProcService getImgProcService() { |   public WxImgProcService getImgProcService() { | ||||||
|     return this.imgProcService; |     return this.imgProcService; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public void setImgProcService(WxMpImgProcService imgProcService) { |   public void setImgProcService(WxImgProcService imgProcService) { | ||||||
|     this.imgProcService = imgProcService; |     this.imgProcService = imgProcService; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -2,11 +2,11 @@ package me.chanjar.weixin.mp.api.impl; | |||||||
|  |  | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||||
| import me.chanjar.weixin.mp.api.WxMpImgProcService; | import me.chanjar.weixin.common.api.WxImgProcService; | ||||||
| import me.chanjar.weixin.mp.api.WxMpService; | import me.chanjar.weixin.mp.api.WxMpService; | ||||||
| import me.chanjar.weixin.mp.bean.imgproc.WxMpImgProcAiCropResult; | import me.chanjar.weixin.common.bean.imgproc.WxImgProcAiCropResult; | ||||||
| import me.chanjar.weixin.mp.bean.imgproc.WxMpImgProcQrCodeResult; | import me.chanjar.weixin.common.bean.imgproc.WxImgProcQrCodeResult; | ||||||
| import me.chanjar.weixin.mp.bean.imgproc.WxMpImgProcSuperResolutionResult; | import me.chanjar.weixin.common.bean.imgproc.WxImgProcSuperResolutionResult; | ||||||
| import me.chanjar.weixin.common.requestexecuter.ocr.OcrDiscernRequestExecutor; | import me.chanjar.weixin.common.requestexecuter.ocr.OcrDiscernRequestExecutor; | ||||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||||
|  |  | ||||||
| @ -27,29 +27,31 @@ import static me.chanjar.weixin.mp.enums.WxMpApiUrl.ImgProc.SUPER_RESOLUTION; | |||||||
|  * @author Theo Nie |  * @author Theo Nie | ||||||
|  */ |  */ | ||||||
| @RequiredArgsConstructor | @RequiredArgsConstructor | ||||||
| public class WxMpImgProcServiceImpl implements WxMpImgProcService { | public class WxMpImgProcServiceImpl implements WxImgProcService { | ||||||
|   private final WxMpService wxMpService; |   private final WxMpService wxMpService; | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public WxMpImgProcQrCodeResult qrCode(String imgUrl) throws WxErrorException { |   public WxImgProcQrCodeResult qrCode(String imgUrl) throws WxErrorException { | ||||||
|     try { |     try { | ||||||
|       imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); |       imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); | ||||||
|     } catch (UnsupportedEncodingException e) { |     } catch (UnsupportedEncodingException e) { | ||||||
|       //ignore |       //ignore | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     final String result = this.wxMpService.get(String.format(QRCODE.getUrl(this.wxMpService.getWxMpConfigStorage()), imgUrl), null); |     String result = this.wxMpService.get(String.format(QRCODE.getUrl(this.wxMpService.getWxMpConfigStorage()), imgUrl), | ||||||
|     return WxMpImgProcQrCodeResult.fromJson(result); |       null); | ||||||
|  |     return WxImgProcQrCodeResult.fromJson(result); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public WxMpImgProcQrCodeResult qrCode(File imgFile) throws WxErrorException { |   public WxImgProcQrCodeResult qrCode(File imgFile) throws WxErrorException { | ||||||
|     String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), FILE_QRCODE.getUrl(this.wxMpService.getWxMpConfigStorage()), imgFile); |     String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), | ||||||
|     return WxMpImgProcQrCodeResult.fromJson(result); |       FILE_QRCODE.getUrl(this.wxMpService.getWxMpConfigStorage()), imgFile); | ||||||
|  |     return WxImgProcQrCodeResult.fromJson(result); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public WxMpImgProcSuperResolutionResult superResolution(String imgUrl) throws WxErrorException { |   public WxImgProcSuperResolutionResult superResolution(String imgUrl) throws WxErrorException { | ||||||
|     try { |     try { | ||||||
|       imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); |       imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); | ||||||
|     } catch (UnsupportedEncodingException e) { |     } catch (UnsupportedEncodingException e) { | ||||||
| @ -57,22 +59,23 @@ public class WxMpImgProcServiceImpl implements WxMpImgProcService { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     final String result = this.wxMpService.get(String.format(SUPER_RESOLUTION.getUrl(this.wxMpService.getWxMpConfigStorage()), imgUrl), null); |     final String result = this.wxMpService.get(String.format(SUPER_RESOLUTION.getUrl(this.wxMpService.getWxMpConfigStorage()), imgUrl), null); | ||||||
|     return WxMpImgProcSuperResolutionResult.fromJson(result); |     return WxImgProcSuperResolutionResult.fromJson(result); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public WxMpImgProcSuperResolutionResult superResolution(File imgFile) throws WxErrorException { |   public WxImgProcSuperResolutionResult superResolution(File imgFile) throws WxErrorException { | ||||||
|     String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), FILE_SUPER_RESOLUTION.getUrl(this.wxMpService.getWxMpConfigStorage()), imgFile); |     String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), | ||||||
|     return WxMpImgProcSuperResolutionResult.fromJson(result); |       FILE_SUPER_RESOLUTION.getUrl(this.wxMpService.getWxMpConfigStorage()), imgFile); | ||||||
|  |     return WxImgProcSuperResolutionResult.fromJson(result); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public WxMpImgProcAiCropResult aiCrop(String imgUrl) throws WxErrorException { |   public WxImgProcAiCropResult aiCrop(String imgUrl) throws WxErrorException { | ||||||
|     return this.aiCrop(imgUrl, ""); |     return this.aiCrop(imgUrl, ""); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public WxMpImgProcAiCropResult aiCrop(String imgUrl, String ratios) throws WxErrorException { |   public WxImgProcAiCropResult aiCrop(String imgUrl, String ratios) throws WxErrorException { | ||||||
|     try { |     try { | ||||||
|       imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); |       imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name()); | ||||||
|     } catch (UnsupportedEncodingException e) { |     } catch (UnsupportedEncodingException e) { | ||||||
| @ -83,22 +86,24 @@ public class WxMpImgProcServiceImpl implements WxMpImgProcService { | |||||||
|       ratios = ""; |       ratios = ""; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     final String result = this.wxMpService.get(String.format(AI_CROP.getUrl(this.wxMpService.getWxMpConfigStorage()), imgUrl, ratios), null); |     final String result = this.wxMpService.get(String.format(AI_CROP.getUrl(this.wxMpService.getWxMpConfigStorage()), | ||||||
|     return WxMpImgProcAiCropResult.fromJson(result); |       imgUrl, ratios), null); | ||||||
|  |     return WxImgProcAiCropResult.fromJson(result); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public WxMpImgProcAiCropResult aiCrop(File imgFile) throws WxErrorException { |   public WxImgProcAiCropResult aiCrop(File imgFile) throws WxErrorException { | ||||||
|     return this.aiCrop(imgFile, ""); |     return this.aiCrop(imgFile, ""); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public WxMpImgProcAiCropResult aiCrop(File imgFile, String ratios) throws WxErrorException { |   public WxImgProcAiCropResult aiCrop(File imgFile, String ratios) throws WxErrorException { | ||||||
|     if (StringUtils.isEmpty(ratios)) { |     if (StringUtils.isEmpty(ratios)) { | ||||||
|       ratios = ""; |       ratios = ""; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), String.format(FILE_AI_CROP.getUrl(this.wxMpService.getWxMpConfigStorage()), ratios), imgFile); |     String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), | ||||||
|     return WxMpImgProcAiCropResult.fromJson(result); |       String.format(FILE_AI_CROP.getUrl(this.wxMpService.getWxMpConfigStorage()), ratios), imgFile); | ||||||
|  |     return WxImgProcAiCropResult.fromJson(result); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,28 +0,0 @@ | |||||||
| package me.chanjar.weixin.mp.bean.imgproc; |  | ||||||
|  |  | ||||||
| import com.google.gson.annotations.SerializedName; |  | ||||||
| import lombok.Data; |  | ||||||
| import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; |  | ||||||
|  |  | ||||||
| import java.io.Serializable; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * 图片高清化返回结果 |  | ||||||
|  * @author Theo Nie |  | ||||||
|  */ |  | ||||||
| @Data |  | ||||||
| public class WxMpImgProcSuperResolutionResult implements Serializable { |  | ||||||
|  |  | ||||||
|   private static final long serialVersionUID = 8007440280170407021L; |  | ||||||
|   @SerializedName("media_id") |  | ||||||
|   private String mediaId; |  | ||||||
|  |  | ||||||
|   @Override |  | ||||||
|   public String toString() { |  | ||||||
|     return WxMpGsonBuilder.create().toJson(this); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   public static WxMpImgProcSuperResolutionResult fromJson(String json) { |  | ||||||
|     return WxMpGsonBuilder.create().fromJson(json, WxMpImgProcSuperResolutionResult.class); |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -2,13 +2,13 @@ package me.chanjar.weixin.mp.api.impl; | |||||||
|  |  | ||||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||||
| import me.chanjar.weixin.common.util.fs.FileUtils; | import me.chanjar.weixin.common.util.fs.FileUtils; | ||||||
| import me.chanjar.weixin.mp.api.WxMpImgProcService; | import me.chanjar.weixin.common.api.WxImgProcService; | ||||||
| import me.chanjar.weixin.mp.api.WxMpService; | import me.chanjar.weixin.mp.api.WxMpService; | ||||||
| import me.chanjar.weixin.mp.api.test.ApiTestModule; | import me.chanjar.weixin.mp.api.test.ApiTestModule; | ||||||
| import me.chanjar.weixin.mp.api.test.TestConstants; | import me.chanjar.weixin.mp.api.test.TestConstants; | ||||||
| import me.chanjar.weixin.mp.bean.imgproc.WxMpImgProcAiCropResult; | import me.chanjar.weixin.common.bean.imgproc.WxImgProcAiCropResult; | ||||||
| import me.chanjar.weixin.mp.bean.imgproc.WxMpImgProcQrCodeResult; | import me.chanjar.weixin.common.bean.imgproc.WxImgProcQrCodeResult; | ||||||
| import me.chanjar.weixin.mp.bean.imgproc.WxMpImgProcSuperResolutionResult; | import me.chanjar.weixin.common.bean.imgproc.WxImgProcSuperResolutionResult; | ||||||
| import org.testng.annotations.Guice; | import org.testng.annotations.Guice; | ||||||
| import org.testng.annotations.Test; | import org.testng.annotations.Test; | ||||||
|  |  | ||||||
| @ -29,7 +29,7 @@ public class WxMpImgProcServiceImplTest { | |||||||
|  |  | ||||||
|   @Test |   @Test | ||||||
|   public void testQrCode() throws WxErrorException { |   public void testQrCode() throws WxErrorException { | ||||||
|     final WxMpImgProcQrCodeResult result = this.mpService.getImgProcService().qrCode("https://gitee.com/binary/weixin-java-tools/raw/master/images/qrcodes/mp.png"); |     final WxImgProcQrCodeResult result = this.mpService.getImgProcService().qrCode("https://gitee.com/binary/weixin-java-tools/raw/master/images/qrcodes/mp.png"); | ||||||
|     assertThat(result).isNotNull(); |     assertThat(result).isNotNull(); | ||||||
|     System.out.println(result); |     System.out.println(result); | ||||||
|   } |   } | ||||||
| @ -38,14 +38,14 @@ public class WxMpImgProcServiceImplTest { | |||||||
|   public void testQrCode2() throws Exception { |   public void testQrCode2() throws Exception { | ||||||
|     InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); |     InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); | ||||||
|     File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); |     File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); | ||||||
|     final WxMpImgProcQrCodeResult result = this.mpService.getImgProcService().qrCode(tempFile); |     final WxImgProcQrCodeResult result = this.mpService.getImgProcService().qrCode(tempFile); | ||||||
|     assertThat(result).isNotNull(); |     assertThat(result).isNotNull(); | ||||||
|     System.out.println(result); |     System.out.println(result); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Test |   @Test | ||||||
|   public void testSuperResolution() throws WxErrorException { |   public void testSuperResolution() throws WxErrorException { | ||||||
|     final WxMpImgProcSuperResolutionResult result = this.mpService.getImgProcService().superResolution("https://gitee.com/binary/weixin-java-tools/raw/master/images/qrcodes/mp.png"); |     final WxImgProcSuperResolutionResult result = this.mpService.getImgProcService().superResolution("https://gitee.com/binary/weixin-java-tools/raw/master/images/qrcodes/mp.png"); | ||||||
|     assertThat(result).isNotNull(); |     assertThat(result).isNotNull(); | ||||||
|     System.out.println(result); |     System.out.println(result); | ||||||
|   } |   } | ||||||
| @ -54,21 +54,21 @@ public class WxMpImgProcServiceImplTest { | |||||||
|   public void testSuperResolution2() throws Exception { |   public void testSuperResolution2() throws Exception { | ||||||
|     InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); |     InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); | ||||||
|     File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); |     File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); | ||||||
|     final WxMpImgProcSuperResolutionResult result = this.mpService.getImgProcService().superResolution(tempFile); |     final WxImgProcSuperResolutionResult result = this.mpService.getImgProcService().superResolution(tempFile); | ||||||
|     assertThat(result).isNotNull(); |     assertThat(result).isNotNull(); | ||||||
|     System.out.println(result); |     System.out.println(result); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Test |   @Test | ||||||
|   public void testAiCrop() throws WxErrorException { |   public void testAiCrop() throws WxErrorException { | ||||||
|     final WxMpImgProcAiCropResult result = this.mpService.getImgProcService().aiCrop("https://gitee.com/binary/weixin-java-tools/raw/master/images/qrcodes/mp.png"); |     final WxImgProcAiCropResult result = this.mpService.getImgProcService().aiCrop("https://gitee.com/binary/weixin-java-tools/raw/master/images/qrcodes/mp.png"); | ||||||
|     assertThat(result).isNotNull(); |     assertThat(result).isNotNull(); | ||||||
|     System.out.println(result); |     System.out.println(result); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Test |   @Test | ||||||
|   public void testAiCrop2() throws WxErrorException { |   public void testAiCrop2() throws WxErrorException { | ||||||
|     final WxMpImgProcAiCropResult result = this.mpService.getImgProcService().aiCrop("https://gitee.com/binary/weixin-java-tools/raw/master/images/qrcodes/mp.png", "1,2.35"); |     final WxImgProcAiCropResult result = this.mpService.getImgProcService().aiCrop("https://gitee.com/binary/weixin-java-tools/raw/master/images/qrcodes/mp.png", "1,2.35"); | ||||||
|     assertThat(result).isNotNull(); |     assertThat(result).isNotNull(); | ||||||
|     System.out.println(result); |     System.out.println(result); | ||||||
|   } |   } | ||||||
| @ -77,7 +77,7 @@ public class WxMpImgProcServiceImplTest { | |||||||
|   public void testAiCrop3() throws Exception { |   public void testAiCrop3() throws Exception { | ||||||
|     InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); |     InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); | ||||||
|     File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); |     File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); | ||||||
|     final WxMpImgProcAiCropResult result = this.mpService.getImgProcService().aiCrop(tempFile); |     final WxImgProcAiCropResult result = this.mpService.getImgProcService().aiCrop(tempFile); | ||||||
|     assertThat(result).isNotNull(); |     assertThat(result).isNotNull(); | ||||||
|     System.out.println(result); |     System.out.println(result); | ||||||
|   } |   } | ||||||
| @ -86,7 +86,7 @@ public class WxMpImgProcServiceImplTest { | |||||||
|   public void testAiCrop4() throws Exception { |   public void testAiCrop4() throws Exception { | ||||||
|     InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); |     InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); | ||||||
|     File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); |     File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), TestConstants.FILE_JPG); | ||||||
|     final WxMpImgProcAiCropResult result = this.mpService.getImgProcService().aiCrop(tempFile, "1,2.35,3.5"); |     final WxImgProcAiCropResult result = this.mpService.getImgProcService().aiCrop(tempFile, "1,2.35,3.5"); | ||||||
|     assertThat(result).isNotNull(); |     assertThat(result).isNotNull(); | ||||||
|     System.out.println(result); |     System.out.println(result); | ||||||
|   } |   } | ||||||
| @ -159,8 +159,8 @@ public class WxMpImgProcServiceImplTest { | |||||||
|         "    }\n" + |         "    }\n" + | ||||||
|         "}"; |         "}"; | ||||||
|       when(wxService.get(anyString(), anyString())).thenReturn(returnJson); |       when(wxService.get(anyString(), anyString())).thenReturn(returnJson); | ||||||
|       final WxMpImgProcService wxMpImgProcService = new WxMpImgProcServiceImpl(wxService); |       final WxImgProcService wxMpImgProcService = new WxMpImgProcServiceImpl(wxService); | ||||||
|       final WxMpImgProcQrCodeResult result = wxMpImgProcService.qrCode("abc"); |       final WxImgProcQrCodeResult result = wxMpImgProcService.qrCode("abc"); | ||||||
|       assertThat(result).isNotNull(); |       assertThat(result).isNotNull(); | ||||||
|       System.out.println(result); |       System.out.println(result); | ||||||
|     } |     } | ||||||
| @ -173,8 +173,8 @@ public class WxMpImgProcServiceImplTest { | |||||||
|         "    \"media_id\": \"6WXsIXkG7lXuDLspD9xfm5dsvHzb0EFl0li6ySxi92ap8Vl3zZoD9DpOyNudeJGB\"\n" + |         "    \"media_id\": \"6WXsIXkG7lXuDLspD9xfm5dsvHzb0EFl0li6ySxi92ap8Vl3zZoD9DpOyNudeJGB\"\n" + | ||||||
|         "}"; |         "}"; | ||||||
|       when(wxService.get(anyString(), anyString())).thenReturn(returnJson); |       when(wxService.get(anyString(), anyString())).thenReturn(returnJson); | ||||||
|       final WxMpImgProcService wxMpImgProcService = new WxMpImgProcServiceImpl(wxService); |       final WxImgProcService wxMpImgProcService = new WxMpImgProcServiceImpl(wxService); | ||||||
|       final WxMpImgProcSuperResolutionResult result = wxMpImgProcService.superResolution("abc"); |       final WxImgProcSuperResolutionResult result = wxMpImgProcService.superResolution("abc"); | ||||||
|       assertThat(result).isNotNull(); |       assertThat(result).isNotNull(); | ||||||
|       System.out.println(result); |       System.out.println(result); | ||||||
|     } |     } | ||||||
| @ -204,8 +204,8 @@ public class WxMpImgProcServiceImplTest { | |||||||
|         "    }\n" + |         "    }\n" + | ||||||
|         "}"; |         "}"; | ||||||
|       when(wxService.get(anyString(), anyString())).thenReturn(returnJson); |       when(wxService.get(anyString(), anyString())).thenReturn(returnJson); | ||||||
|       final WxMpImgProcService wxMpImgProcService = new WxMpImgProcServiceImpl(wxService); |       final WxImgProcService wxMpImgProcService = new WxMpImgProcServiceImpl(wxService); | ||||||
|       final WxMpImgProcAiCropResult result = wxMpImgProcService.aiCrop("abc"); |       final WxImgProcAiCropResult result = wxMpImgProcService.aiCrop("abc"); | ||||||
|       assertThat(result).isNotNull(); |       assertThat(result).isNotNull(); | ||||||
|       System.out.println(result); |       System.out.println(result); | ||||||
|     } |     } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Binary Wang
					Binary Wang