后端生成商品详情字体缺失
This commit is contained in:
@ -2,7 +2,10 @@ package co.yixiang.modules.shop.service;
|
||||
|
||||
import co.yixiang.modules.shop.web.dto.ProductDTO;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
|
||||
public interface CreatShareProductService {
|
||||
|
||||
String creatProductPic(ProductDTO productDTO,String qrcode,String spreadPicName,String spreadPicPath,String apiUrl);
|
||||
String creatProductPic(ProductDTO productDTO,String qrcode,String spreadPicName,String spreadPicPath,String apiUrl) throws IOException, FontFormatException;
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import co.yixiang.modules.shop.web.dto.ProductDTO;
|
||||
import co.yixiang.modules.user.entity.YxSystemAttachment;
|
||||
import co.yixiang.modules.user.service.YxSystemAttachmentService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -26,7 +27,7 @@ public class CreatShareProductServiceImpl implements CreatShareProductService {
|
||||
|
||||
private final YxSystemAttachmentService systemAttachmentService;
|
||||
|
||||
public String creatProductPic(ProductDTO productDTO,String shareCode,String spreadPicName,String spreadPicPath,String apiUrl) {
|
||||
public String creatProductPic(ProductDTO productDTO,String shareCode,String spreadPicName,String spreadPicPath,String apiUrl) throws IOException, FontFormatException {
|
||||
YxSystemAttachment attachmentT = systemAttachmentService.getInfo(spreadPicName);
|
||||
String spreadUrl = "";
|
||||
if(ObjectUtil.isNull(attachmentT)){
|
||||
@ -35,14 +36,9 @@ public class CreatShareProductServiceImpl implements CreatShareProductService {
|
||||
//开启画图
|
||||
Graphics g = img.getGraphics();
|
||||
//背景 -- 读取互联网图片
|
||||
BufferedImage back = null;
|
||||
InputStream stream = getClass().getClassLoader().getResourceAsStream("background.png");
|
||||
try {
|
||||
ImageInputStream background = ImageIO.createImageInputStream(stream);
|
||||
back = ImageIO.read(background);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ImageInputStream background = ImageIO.createImageInputStream(stream);
|
||||
BufferedImage back = ImageIO.read(background);
|
||||
|
||||
g.drawImage(back.getScaledInstance(750, 1334, Image.SCALE_DEFAULT), 0, 0, null); // 绘制缩小后的图
|
||||
//商品 banner图
|
||||
@ -54,13 +50,18 @@ public class CreatShareProductServiceImpl implements CreatShareProductService {
|
||||
e.printStackTrace();
|
||||
}
|
||||
g.drawImage(priductUrl.getScaledInstance(690,516,Image.SCALE_DEFAULT),29,61,null);
|
||||
InputStream streamT = getClass().getClassLoader()
|
||||
.getResourceAsStream("Alibaba-PuHuiTi-Regular.otf");
|
||||
File newFileT = new File("Alibaba-PuHuiTi-Regular.otf");
|
||||
FileUtils.copyInputStreamToFile(streamT, newFileT);
|
||||
Font font = Font.createFont(Font.TRUETYPE_FONT, newFileT);
|
||||
//文案标题
|
||||
g.setFont(new Font("微软雅黑", Font.BOLD, 34));
|
||||
g.setFont(font.deriveFont(Font.BOLD,34));
|
||||
g.setColor(new Color(29,29,29));
|
||||
//绘制文字
|
||||
g.drawString(productDTO.getStoreInfo().getStoreName(), 31, 638);
|
||||
//文案
|
||||
g.setFont(new Font("微软雅黑", Font.PLAIN, 30));
|
||||
g.setFont(font.deriveFont(Font.PLAIN,30));
|
||||
g.setColor(new Color(47,47,47));
|
||||
int fontlen = getWatermarkLength(productDTO.getStoreInfo().getStoreInfo(), g);
|
||||
//文字长度相对于图片宽度应该有多少行
|
||||
@ -108,24 +109,24 @@ public class CreatShareProductServiceImpl implements CreatShareProductService {
|
||||
g.drawImage(bground.getScaledInstance(160, 40, Image.SCALE_DEFAULT), 30, 1053, null);
|
||||
|
||||
//限时促销价
|
||||
g.setFont(new Font("微软雅黑", Font.PLAIN, 24));
|
||||
g.setFont(font.deriveFont(Font.PLAIN,24));
|
||||
g.setColor(new Color(255,255,255));
|
||||
g.drawString("限时促销价", 50, 1080);
|
||||
|
||||
//价格
|
||||
g.setFont(new Font("微软雅黑", Font.PLAIN, 50));
|
||||
g.setFont(font.deriveFont(Font.PLAIN,50));
|
||||
g.setColor(new Color(249,64,64));
|
||||
g.drawString("¥" +productDTO.getStoreInfo().getPrice(), 29, 1162);
|
||||
|
||||
//原价
|
||||
g.setFont(new Font("微软雅黑", Font.PLAIN, 36));
|
||||
g.setFont(font.deriveFont(Font.PLAIN,36));
|
||||
g.setColor(new Color(171,171,171));
|
||||
String price = "¥" + productDTO.getStoreInfo().getOtPrice();
|
||||
g.drawString(price, 260, 1160);
|
||||
g.drawLine(250,1148,260+150,1148);
|
||||
|
||||
//商品名称
|
||||
g.setFont(new Font("微软雅黑", Font.PLAIN, 32));
|
||||
g.setFont(font.deriveFont(Font.PLAIN,32));
|
||||
g.setColor(new Color(29,29,29));
|
||||
g.drawString(productDTO.getStoreInfo().getStoreName(), 30, 1229);
|
||||
|
||||
@ -142,7 +143,7 @@ public class CreatShareProductServiceImpl implements CreatShareProductService {
|
||||
g.drawImage(qrCode.getScaledInstance(174, 174, Image.SCALE_DEFAULT), 536, 1057, null);
|
||||
|
||||
//二维码字体
|
||||
g.setFont(new Font("微软雅黑", Font.PLAIN, 25));
|
||||
g.setFont(font.deriveFont(Font.PLAIN,25));
|
||||
g.setColor(new Color(171,171,171));
|
||||
//绘制文字
|
||||
g.drawString("扫描或长按小程序码", 515, 1260);
|
||||
|
@ -39,7 +39,9 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -120,7 +122,7 @@ public class StoreProductController extends BaseController {
|
||||
public ApiResult<ProductDTO> detail(@PathVariable Integer id,
|
||||
@RequestParam(value = "",required=false) String latitude,
|
||||
@RequestParam(value = "",required=false) String longitude,
|
||||
@RequestParam(value = "",required=false) String from){
|
||||
@RequestParam(value = "",required=false) String from) throws IOException, FontFormatException {
|
||||
int uid = SecurityUtils.getUserId().intValue();
|
||||
ProductDTO productDTO = storeProductService.goodsDetail(id,0,uid,latitude,longitude);
|
||||
// 海报
|
||||
|
Reference in New Issue
Block a user