## 分享图;
This commit is contained in:
parent
f5d9ebf5dc
commit
239d1868ff
|
@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.hzs.common.core.config.OssConfig;
|
import com.hzs.common.core.config.OssConfig;
|
||||||
import com.hzs.common.core.enums.EShareType;
|
import com.hzs.common.core.enums.EShareType;
|
||||||
import com.hzs.common.core.utils.BarCodeUtils;
|
import com.hzs.third.share.unit.BarCodeUtils;
|
||||||
import com.hzs.common.domain.third.share.TShareCode;
|
import com.hzs.common.domain.third.share.TShareCode;
|
||||||
import com.hzs.third.share.dto.ShareServiceDTO;
|
import com.hzs.third.share.dto.ShareServiceDTO;
|
||||||
import com.hzs.third.share.mapper.TShareCodeMapper;
|
import com.hzs.third.share.mapper.TShareCodeMapper;
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
package com.hzs.common.core.utils;
|
package com.hzs.third.share.unit;
|
||||||
|
|
||||||
import com.google.zxing.BarcodeFormat;
|
import com.google.zxing.BarcodeFormat;
|
||||||
import com.google.zxing.EncodeHintType;
|
import com.google.zxing.EncodeHintType;
|
||||||
import com.google.zxing.client.j2se.MatrixToImageWriter;
|
import com.google.zxing.client.j2se.MatrixToImageWriter;
|
||||||
import com.google.zxing.common.BitMatrix;
|
import com.google.zxing.common.BitMatrix;
|
||||||
import com.google.zxing.qrcode.QRCodeWriter;
|
import com.google.zxing.qrcode.QRCodeWriter;
|
||||||
|
import com.hzs.common.core.utils.OssUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: sui q
|
* 条形码+文字 生成
|
||||||
* @time: 2021/11/23 11:02
|
|
||||||
* @description: 条形码+文字 生成
|
|
||||||
* @classname: BarCodeUtils
|
|
||||||
* @package_name: com.hzs.web.util
|
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class BarCodeUtils {
|
public class BarCodeUtils {
|
||||||
|
@ -32,21 +32,30 @@ public class BarCodeUtils {
|
||||||
public static String createZeroQRCode(String contents) {
|
public static String createZeroQRCode(String contents) {
|
||||||
String filePath = "";
|
String filePath = "";
|
||||||
try {
|
try {
|
||||||
String ext = "png";
|
String ext = "jpg";
|
||||||
|
|
||||||
Map<EncodeHintType, Object> hints = new HashMap<>();
|
Map<EncodeHintType, Object> hints = new HashMap<>();
|
||||||
// 生成二维码时,白边框间隔距离
|
// 生成二维码时,白边框间隔距离
|
||||||
hints.put(EncodeHintType.MARGIN, 1);
|
hints.put(EncodeHintType.MARGIN, 1);
|
||||||
QRCodeWriter qrCodeWriter = new QRCodeWriter();
|
QRCodeWriter qrCodeWriter = new QRCodeWriter();
|
||||||
BitMatrix bitMatrix = qrCodeWriter.encode(contents, BarcodeFormat.QR_CODE, 320, 320, hints);
|
BitMatrix bitMatrix = qrCodeWriter.encode(contents, BarcodeFormat.QR_CODE, 260, 260, hints);
|
||||||
|
|
||||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||||
|
|
||||||
MatrixToImageWriter.writeToStream(bitMatrix, ext, byteArrayOutputStream);
|
MatrixToImageWriter.writeToStream(bitMatrix, ext, byteArrayOutputStream);
|
||||||
final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
|
final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
|
||||||
|
|
||||||
|
ImageComposer composer = new ImageComposer();
|
||||||
|
// 加载背景图
|
||||||
|
BufferedImage baseImage = composer.loadBaseImage();
|
||||||
|
// 合成图片
|
||||||
|
BufferedImage composedImage = composer.composeImages(baseImage, ImageIO.read(inputStream));
|
||||||
|
|
||||||
|
ByteArrayOutputStream os = new ByteArrayOutputStream();
|
||||||
|
ImageIO.write(composedImage, "png", os);
|
||||||
|
final InputStream is = new ByteArrayInputStream(os.toByteArray());
|
||||||
|
|
||||||
// 上传OSS
|
// 上传OSS
|
||||||
filePath = OssUtil.uploadFileForStream(inputStream, ext, "shareCode", null);
|
filePath = OssUtil.uploadFileForStream(is, ext, "shareCode", null);
|
||||||
|
// filePath = OssUtil.uploadFileForStream(inputStream, ext, "shareCode", null);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("createZeroQRCode error! contents: {}", contents, e);
|
log.error("createZeroQRCode error! contents: {}", contents, e);
|
||||||
}
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.hzs.third.share.unit;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
|
|
||||||
|
public class ImageComposer {
|
||||||
|
|
||||||
|
public BufferedImage loadImage(String filePath) throws IOException {
|
||||||
|
return ImageIO.read(new File(filePath));
|
||||||
|
}
|
||||||
|
|
||||||
|
public BufferedImage loadBaseImage() throws IOException {
|
||||||
|
InputStream inputStream = ImageComposer.class.getClassLoader().getResourceAsStream("share.jpg");
|
||||||
|
return ImageIO.read(inputStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BufferedImage composeImages(BufferedImage baseImage, BufferedImage overlayImage) {
|
||||||
|
int overlayWidth = 255;
|
||||||
|
int overlayHeight = 255;
|
||||||
|
|
||||||
|
BufferedImage composedImage = new BufferedImage(
|
||||||
|
baseImage.getWidth(),
|
||||||
|
baseImage.getHeight(),
|
||||||
|
BufferedImage.TYPE_INT_ARGB
|
||||||
|
);
|
||||||
|
|
||||||
|
Graphics2D g2d = composedImage.createGraphics();
|
||||||
|
g2d.drawImage(baseImage, 0, 0, null);
|
||||||
|
g2d.drawImage(overlayImage, 829, 1547, overlayWidth, overlayHeight, null);
|
||||||
|
Font font = new Font("Serif", Font.BOLD, 55);
|
||||||
|
g2d.setFont(font);
|
||||||
|
g2d.drawString("BL****5678", 500, 2425);
|
||||||
|
g2d.dispose();
|
||||||
|
|
||||||
|
return composedImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveImage(BufferedImage image, String filePath) throws IOException {
|
||||||
|
ImageIO.write(image, "png", new File(filePath));
|
||||||
|
}
|
||||||
|
|
||||||
|
// public static void main(String[] args) {
|
||||||
|
// try {
|
||||||
|
// ImageComposer composer = new ImageComposer();
|
||||||
|
//
|
||||||
|
// // 加载图片
|
||||||
|
// BufferedImage baseImage = composer.loadImage("d://图片合成//base.jpg");
|
||||||
|
// BufferedImage overlayImage = composer.loadImage("d://图片合成//code.png");
|
||||||
|
//
|
||||||
|
// // 合成图片
|
||||||
|
// BufferedImage composedImage = composer.composeImages(baseImage, overlayImage);
|
||||||
|
// // 保存合成后的图片
|
||||||
|
// composer.saveImage(composedImage, "d://图片合成//print.jpg");
|
||||||
|
// System.out.println("图片合成成功!");
|
||||||
|
// } catch (IOException e) {
|
||||||
|
// e.printStackTrace();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 619 KiB |
Loading…
Reference in New Issue