This commit is contained in:
sjm 2023-12-25 02:58:26 +08:00
parent 9161f7357e
commit 8f8bbf22ac
2 changed files with 110 additions and 24 deletions

View File

@ -22,44 +22,80 @@ public class QRCServiceImpl implements QRCService{
private CollectIconListDao collectIconListDao; private CollectIconListDao collectIconListDao;
public String QR(CollectIconList collect) throws Exception { public String QR(CollectIconList collect) throws Exception {
String logoPath ="src/main/resources/static/logo/NAV.png"; String logoPath = "src/main/resources/static/logo/NAV.png";
String destPath = "src/main/resources/static/qr"; String destPath = "src/main/resources/static/qr";
// 通过传入collect的url_id查找相同网址图片列表
// List<CollectIconList> collectIconList = collectIconListDao.selectByUrlid(collect.getUrl_id());
// 通过collect的url_id查找网址id对应网址 // 通过collect的url_id查找网址id对应网址
UrlList urlList = urlListDao.selectByPrimaryKey(Long.valueOf(collect.getUrl_id())); UrlList urlList = urlListDao.selectByPrimaryKey(Long.valueOf(collect.getUrl_id()));
List<CollectIconList> list = collectIconListDao.selectByUrlid(collect.getUrl_id()); List<CollectIconList> list = collectIconListDao.selectByUrlid(collect.getUrl_id());
if(list.size()==0){ // 如果表中没有可以插入
if(urlList != null && collect.getIcon_url()!=null){ if (list.size() == 0) {
// 将icon下载到本地并存储本地路径 // 如果icon是url
if(QRCodeUtil.isBase64(collect.getIcon_url())){
String icon_url = QRCodeUtil.downloadPicture(collect.getIcon_url()); String icon_url = QRCodeUtil.downloadPicture(collect.getIcon_url());
collect.setIcon_url(icon_url); collect.setIcon_url(icon_url);
// 获取网址url
String url = urlList.getUrl(); String url = urlList.getUrl();
// 将网址生成二维码并返回本地路径 // 将网址生成二维码并返回本地路径
String url_wait = QRCodeUtil.encode(url, logoPath, destPath, true); String url_wait = QRCodeUtil.encode(url, logoPath, destPath, true);
// 为collect设置二维码本地路径
collect.setQr_url(url_wait); collect.setQr_url(url_wait);
collectIconListDao.insert(collect);
String base64 = QRCodeUtil.ImageToBase64(url_wait); String base64 = QRCodeUtil.ImageToBase64(url_wait);
return JSON.toJSONString(base64);
}else if(urlList != null && collect.getIcon_url()==null){
// 获取网址url
String url = urlList.getUrl();
String url_wait = QRCodeUtil.encode(url, logoPath, destPath, true);
// 为collect设置二维码本地路径
collect.setQr_url(url_wait);
collectIconListDao.insert(collect); collectIconListDao.insert(collect);
String base64 = QRCodeUtil.ImageToBase64(url_wait);
return JSON.toJSONString(base64); return JSON.toJSONString(base64);
} }
}else{ else{
String url_wait = list.get(0).getQr_url(); String base64str = QRCodeUtil.delete_profix(collect.getIcon_url());
String base64 = QRCodeUtil.ImageToBase64(url_wait); String icon_url = QRCodeUtil.GenerateImage(base64str,"src/main/resources/static/icon");
return JSON.toJSONString(base64); collect.setIcon_url(icon_url);
String url = urlList.getUrl();
String url_wait = QRCodeUtil.encode(url, logoPath, destPath, true);
collect.setQr_url(url_wait);
String base64 = QRCodeUtil.ImageToBase64(url_wait);
collectIconListDao.insert(collect);
return JSON.toJSONString(base64);
}
} else {
return JSON.toJSONString("内容已存在");
} }
return null;
} }
//// 通过传入collect的url_id查找相同网址图片列表
//// List<CollectIconList> collectIconList = collectIconListDao.selectByUrlid(collect.getUrl_id());
//
//// 通过collect的url_id查找网址id对应网址
// UrlList urlList = urlListDao.selectByPrimaryKey(Long.valueOf(collect.getUrl_id()));
//
// List<CollectIconList> list = collectIconListDao.selectByUrlid(collect.getUrl_id());
// if(list.size()==0){
// if(urlList != null && collect.getIcon_url()!=null){
//// 将icon下载到本地并存储本地路径
// String icon_url = QRCodeUtil.downloadPicture(collect.getIcon_url());
// collect.setIcon_url(icon_url);
//
//
//// 为collect设置二维码本地路径
// collect.setQr_url(url_wait);
// collectIconListDao.insert(collect);
// String base64 = QRCodeUtil.ImageToBase64(url_wait);
// return JSON.toJSONString(base64);
// }else if(urlList != null && collect.getIcon_url()==null){
//// 获取网址url
// String url = urlList.getUrl();
// String url_wait = QRCodeUtil.encode(url, logoPath, destPath, true);
//// 为collect设置二维码本地路径
// collect.setQr_url(url_wait);
// collectIconListDao.insert(collect);
// String base64 = QRCodeUtil.ImageToBase64(url_wait);
// return JSON.toJSONString(base64);
// }
// }else{
// String url_wait = list.get(0).getQr_url();
// String base64 = QRCodeUtil.ImageToBase64(url_wait);
// return JSON.toJSONString(base64);
// }
// return null;
// }
} }

View File

@ -20,6 +20,7 @@ import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.regex.Pattern;
@Component @Component
@Service @Service
@ -431,7 +432,56 @@ public class QRCodeUtil {
return (serverPath +"/" + fileName); return (serverPath +"/" + fileName);
} }
// 对字节数组字符串进行Base64解码并生成图片
//imgFilePath 待保存的本地路径
public static String GenerateImage(String base64Str, String imgFilePath) {
if (base64Str == null) // 图像数据为空
return null;
Base64.Decoder decoder = Base64.getDecoder();
try {
// Base64解码
byte[] bytes = decoder.decode(base64Str);
for (int i = 0; i < bytes.length; ++i) {
if (bytes[i] < 0) {// 调整异常数据
bytes[i] += 256;
}
}
//设置图片名称这个随意
String date = new Random().nextInt(99999999)+".jpg";
String fileName = date ;
// 生成jpg图片
OutputStream out = new FileOutputStream(imgFilePath +"/" + fileName);
out.write(bytes);
out.flush();
out.close();
return (imgFilePath +"/" + fileName);
} catch (Exception e) {
return null;
}
}
public static boolean isBase64(String url){
String reg = "[a-zA-z]+://[^\\s]*";
boolean isMatch = Pattern.matches(reg, url);
if(isMatch){
return isMatch;
}
return isMatch;
}
public static String delete_profix(String base64){
String delete = "data:image/jpg;base64,";
String Base64 = base64;
return(base64.replace(delete,""));
}
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
// String text = "https://www.baidu.com"; //这里设置自定义网站url // String text = "https://www.baidu.com"; //这里设置自定义网站url
// String logoPath ="src/main/resources/static/logo/NAV.png"; // String logoPath ="src/main/resources/static/logo/NAV.png";
// String destPath = "src/main/resources/static/qr"; // String destPath = "src/main/resources/static/qr";