package cn.besteam.modules.system.service.impl;
|
|
import cn.besteam.common.constant.ErrorCode;
|
import cn.besteam.common.exception.BusinessException;
|
import cn.besteam.common.util.StringUtil;
|
import cn.besteam.config.OssConfig;
|
import cn.besteam.modules.system.service.IOssService;
|
import cn.besteam.modules.system.service.IQrCodeService;
|
import cn.besteam.modules.system.util.MyQrCode;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.io.FileUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import uk.org.okapibarcode.backend.Code128;
|
import uk.org.okapibarcode.backend.HumanReadableLocation;
|
import uk.org.okapibarcode.backend.QrCode;
|
import uk.org.okapibarcode.backend.Symbol;
|
import uk.org.okapibarcode.output.Java2DRenderer;
|
|
import javax.imageio.ImageIO;
|
import java.awt.*;
|
import java.awt.image.BufferedImage;
|
import java.io.File;
|
|
/**
|
* @author chenqilong
|
* @since 2019-04-16
|
*/
|
@Service
|
@Slf4j
|
public class QrCodeServiceImpl implements IQrCodeService {
|
|
@Autowired
|
private IOssService ossService;
|
|
@Value("${sys.qrcode.magnification}")
|
private int magnification;
|
|
@Autowired
|
private OssConfig ossConfig;
|
|
@Override
|
public String genBarcode(String content) {
|
|
try {
|
Code128 barcode = new Code128();
|
barcode.setFontName("Courier");
|
barcode.setFontSize(20);
|
barcode.setQuietZoneHorizontal(10);
|
barcode.setQuietZoneVertical(10);
|
barcode.setModuleWidth(2);
|
barcode.setBarHeight(100);
|
barcode.setHumanReadableLocation(HumanReadableLocation.BOTTOM);
|
barcode.setContent(content);
|
int width = barcode.getWidth();
|
int height = barcode.getHeight();
|
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
|
Graphics2D g2d = image.createGraphics();
|
Java2DRenderer renderer = new Java2DRenderer(g2d, 1, Color.WHITE, Color.BLACK);
|
renderer.render(barcode);
|
File output = new File(FileUtils.getTempDirectoryPath() + File.separator + StringUtil.uuidNotLine() + ".jpeg");
|
ImageIO.write(image, "jpeg", output);
|
return ossService.uploadImage(getFolder(), FileUtils.readFileToByteArray(output));
|
} catch (Exception e) {
|
log.error("", e);
|
throw new BusinessException(ErrorCode.ERR_500);
|
}
|
}
|
|
@Override
|
public String genQrCode(String content) {
|
|
try {
|
QrCode qrCode = new QrCode();
|
qrCode.setPreferredVersion(10);
|
qrCode.setContent(content);
|
int magnification = this.magnification > 0 ? this.magnification : 10;
|
int width = qrCode.getWidth() * magnification;
|
int height = qrCode.getHeight() * magnification;
|
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
|
Graphics2D g2d = image.createGraphics();
|
Java2DRenderer renderer = new Java2DRenderer(g2d, magnification, Color.WHITE, Color.BLACK);
|
renderer.render(qrCode);
|
File output = new File(FileUtils.getTempDirectoryPath() + File.separator + StringUtil.uuidNotLine() + ".jpeg");
|
ImageIO.write(image, "jpeg", output);
|
return ossService.uploadImage(getFolder(), FileUtils.readFileToByteArray(output));
|
} catch (Exception e) {
|
log.error("", e);
|
}
|
return null;
|
}
|
|
@Override
|
public File genQrCodeFile(String content) {
|
|
try {
|
MyQrCode qrCode = new MyQrCode();
|
qrCode.setPreferredVersion(10);
|
qrCode.setContent(content);
|
int magnification = this.magnification > 0 ? this.magnification : 10;
|
int width = qrCode.getWidth() * magnification;
|
int height = qrCode.getHeight() * magnification;
|
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
|
Graphics2D g2d = image.createGraphics();
|
Java2DRenderer renderer = new Java2DRenderer(g2d, magnification, Color.WHITE, Color.BLACK);
|
renderer.render(qrCode);
|
File output = new File(FileUtils.getTempDirectoryPath() + File.separator + StringUtil.uuidNotLine() + ".jpeg");
|
ImageIO.write(image, "jpeg", output);
|
return output;
|
} catch (Exception e) {
|
log.error("", e);
|
}
|
return null;
|
}
|
|
private String getFolder() {
|
|
return ossConfig.getStoreFolder();
|
}
|
|
}
|