import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; /** * 加载TXT文件 * @author mukeliang * 2014年9月15日 */ public class LoaderTxtFile { /** * 功能:Java读取txt文件的内容 * 步骤:1:先获得文件句柄 * 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取 * 3:读取到输入流后,需要读取生成字节流 * 4:一行一行的输出。readline()。 * 备注:需要考虑的是异常情况 * @param filePath */ public static List<String> readTxtFile(String filePath){ List<String> list = new ArrayList<String>(); try { String encoding="GBK"; File file=new File(filePath); if(file.isFile() && file.exists()){ //判断文件是否存在 InputStreamReader read = new InputStreamReader( new FileInputStream(file),encoding);//考虑到编码格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while((lineTxt = bufferedReader.readLine()) != null){ System.out.println(lineTxt); list.add(lineTxt); } read.close(); }else{ System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } return list; } public static void main(String argv[]){ String filePath = "d:\\test.txt"; // "res/"; readTxtFile(filePath); } }
import java.awt.image.BufferedImage; import jp.sourceforge.qrcode.data.QRCodeImage; public class TwoDimensionCodeImage implements QRCodeImage { BufferedImage bufImg; public TwoDimensionCodeImage(BufferedImage bufImg) { this.bufImg = bufImg; } @Override public int getHeight() { return bufImg.getHeight(); } @Override public int getPixel(int x, int y) { return bufImg.getRGB(x, y); } @Override public int getWidth() { return bufImg.getWidth(); } }
import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.util.List; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.imageio.ImageIO; import jp.sourceforge.qrcode.QRCodeDecoder; import jp.sourceforge.qrcode.exception.DecodingFailedException; import com.swetake.util.Qrcode; public class TwoDimensionCode { /** * 生成二维码(QRCode)图片 * @param content 存储内容 * @param imgPath 图片路径 */ public void encoderQRCode(String content, String imgPath) { this.encoderQRCode(content, imgPath, "png", 7); } /** * 生成二维码(QRCode)图片 * @param content 存储内容 * @param output 输出流 */ public void encoderQRCode(String content, OutputStream output) { this.encoderQRCode(content, output, "png", 7); } /** * 生成二维码(QRCode)图片 * @param content 存储内容 * @param imgPath 图片路径 * @param imgType 图片类型 */ public void encoderQRCode(String content, String imgPath, String imgType) { this.encoderQRCode(content, imgPath, imgType, 7); } /** * 生成二维码(QRCode)图片 * @param content 存储内容 * @param output 输出流 * @param imgType 图片类型 */ public void encoderQRCode(String content, OutputStream output, String imgType) { this.encoderQRCode(content, output, imgType, 7); } /** * 生成二维码(QRCode)图片 * @param content 存储内容 * @param imgPath 图片路径 * @param imgType 图片类型 * @param size 二维码尺寸 */ public void encoderQRCode(String content, String imgPath, String imgType, int size) { try { BufferedImage bufImg = this.qRCodeCommon(content, imgType, size); File imgFile = new File(imgPath); // 生成二维码QRCode图片 ImageIO.write(bufImg, imgType, imgFile); } catch (Exception e) { e.printStackTrace(); } } /** * 生成二维码(QRCode)图片 * @param content 存储内容 * @param output 输出流 * @param imgType 图片类型 * @param size 二维码尺寸 */ public void encoderQRCode(String content, OutputStream output, String imgType, int size) { try { BufferedImage bufImg = this.qRCodeCommon(content, imgType, size); // 生成二维码QRCode图片 ImageIO.write(bufImg, imgType, output); } catch (Exception e) { e.printStackTrace(); } } /** * 生成二维码(QRCode)图片的公共方法 * 没有LOGO图片的情况 * @param content 存储内容 * @param imgType 图片类型 * @param size 二维码尺寸 * @return */ private BufferedImage qRCodeCommonBak(String content, String imgType, int size) { BufferedImage bufImg = null; try { Qrcode qrcodeHandler = new Qrcode(); // 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小 qrcodeHandler.setQrcodeErrorCorrect('M'); qrcodeHandler.setQrcodeEncodeMode('B'); // 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大 qrcodeHandler.setQrcodeVersion(size); // 获得内容的字节数组,设置编码格式 byte[] contentBytes = content.getBytes("utf-8"); // 图片尺寸 int imgSize = 67 + 12 * (size - 1); bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB); Graphics2D gs = bufImg.createGraphics(); // 设置背景颜色 gs.setBackground(Color.WHITE); gs.clearRect(0, 0, imgSize, imgSize); String logoPath = "images/logo.png"; Image img = ImageIO.read(new File(logoPath));// 实例化一个Image对象。 gs.drawImage(img, 10, 10, null); // 设定图像颜色> BLACK gs.setColor(Color.BLACK); // 设置偏移量,不设置可能导致解析出错 int pixoff = 2; // 输出内容> 二维码 if (contentBytes.length > 0 && contentBytes.length < 800) { boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes); for (int i = 0; i < codeOut.length; i++) { for (int j = 0; j < codeOut.length; j++) { if (codeOut[j][i]) { gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3); } } } } else { throw new Exception("QRCode content bytes length = " + contentBytes.length + " not in [0, 800]."); } gs.dispose(); bufImg.flush(); } catch (Exception e) { e.printStackTrace(); } return bufImg; } /** * 有LOGO图片的情况 * @param content * @param imgType * @param size * @return */ private BufferedImage qRCodeCommon(String content, String imgType, int size) { BufferedImage bufImg = null; try { Qrcode qrcodeHandler = new Qrcode(); // 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小 qrcodeHandler.setQrcodeErrorCorrect('M'); // N代表数字,A代表字符a-Z,B代表其他字符 qrcodeHandler.setQrcodeEncodeMode('B'); // 设置设置二维码版本,取值范围1-40,值越大尺寸越大,可存储的信息越大 qrcodeHandler.setQrcodeVersion(8); byte[] contentBytes = content.getBytes("utf-8"); bufImg = new BufferedImage(149, 149, BufferedImage.TYPE_INT_RGB); Graphics2D gs = bufImg.createGraphics(); gs.setBackground(Color.WHITE); gs.clearRect(0, 0, 149, 149); // 设定图像颜色 > BLACK gs.setColor(Color.BLACK); // 设置偏移量 不设置可能导致解析出错 int pixoff = 2; // 输出内容 > 二维码 if (contentBytes.length > 0 && contentBytes.length < 150) { boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes); for (int i = 0; i < codeOut.length; i++) { for (int j = 0; j < codeOut.length; j++) { if (codeOut[j][i]) { gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3); } } } } else { System.err.println("QRCode content bytes length = " + contentBytes.length + " not in [ 0,125]. "); return null; } String logoPath = "d:\\TwoDimension\\logo.png"; // String logoPath = "images/logo.png"; Image img = ImageIO.read(new File(logoPath));// 实例化一个Image对象。 gs.drawImage(img, 50, 50, null); gs.dispose(); bufImg.flush(); } catch (Exception e) { e.printStackTrace(); } return bufImg; } /** * 解析二维码(QRCode) * @param input 输入流 * @return */ public String decoderQRCode(InputStream input) { BufferedImage bufImg = null; String content = null; try { bufImg = ImageIO.read(input); QRCodeDecoder decoder = new QRCodeDecoder(); content = new String(decoder.decode(new TwoDimensionCodeImage(bufImg)), "utf-8"); } catch (IOException e) { System.out.println("Error: " + e.getMessage()); e.printStackTrace(); } catch (DecodingFailedException dfe) { System.out.println("Error: " + dfe.getMessage()); dfe.printStackTrace(); } return content; } public static void main(String[] args) throws Exception { String filePath = "D:\\TwoDimension\\sourcefile\\sourceurl.txt"; List sourceFileList = LoaderTxtFile.readTxtFile(filePath); for(int j=0;j<sourceFileList.size();j++){ //解析sourceurl.txt文件中的数据,并生成对应的目录,用以存放生成的二维码数据 String sourceFile = (String)sourceFileList.get(j); //D:\TwoDimension\sourcefile\126\126.txt String[] tempAarray = sourceFile.split("\\\\"); //取出126目录 String generateDir = tempAarray[3]; //D:\\TwoDimension\\targetfile\\126\\ String targetPath = "D:\\TwoDimension\\targetfile\\" + generateDir + "\\"; File file = new File(targetPath); if(!file.exists()){ file.mkdir(); } //解析数据文件中的URL地址,生成二维码 List sourceDataList = LoaderTxtFile.readTxtFile(sourceFile); for(int i=0;i<sourceDataList.size();i++){ String encodeUrlAddress = (String)sourceDataList.get(i); //从 http://www.51art.com/jingmai/A831001 中,取出拍品编号 String auctionNo = encodeUrlAddress.substring(encodeUrlAddress.lastIndexOf("/")+1); //D:\\TwoDimension\\targetfile\\126\\A831001.png String imgPath = targetPath + auctionNo+".png"; //生成二维码 TwoDimensionCode handler = new TwoDimensionCode(); handler.encoderQRCode(encodeUrlAddress, imgPath, "png"); //将二维码解析成对应的数据 String decoderContent = handler.decoderQRCode(new FileInputStream(imgPath)); System.out.println(decoderContent); } } System.out.println("========================完成========================="); } }
相关推荐
使用Python连接数据库,读取数据,然后循环遍历动态批量生成带不同自定义文字Logo的二维码。分开后主要分为几个主要点:1:生成带LOGO的二维码 2:生成自定义文字的LOGO,3:图片处理为圆角 4 连接数据库 附带连接...
C#.NET生成普通二维码方法及生成带图片二维码方法源码Demo,两种二维码都有,简单套用,代码易懂,有什么问题可以发送邮件至792166417@qq.com
单个或批量生成带LOGO的二维码程序,可从文件中导入
今天用到了zxing,做了一个二维码生成小工具,在这里把全部源码公开,源码使用的是.net 4.6版本,可直接运行。源码中含有二维码带LOGO方法,二维码下方带描述内容,还可以批量的生成多张二维码图片。
今天小编就为大家分享一篇Python3批量生成带logo的二维码方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
SQ二维码批量生成器是由吾爱破解大神制作的便捷的二维码批量生成软件,软件支持批量二维码生成,需要的朋友可以前来本站下载。 软件特征 1、二维码快速批量生成 2、支持内嵌logo 3、支持二维码下方添加相应文本 ...
二维码图片内容批量识别;二维码批量生成图片,支持添加LOGO,支持从excel表格导入。
软件实现操作简单快速,且支持批量生成,还可以对生成的二维码编辑色彩,简单的编辑绘制,软件界面美观简洁、使用方便,二维码生成速度快,质量高,对于用户来说是一款很不错的软件,小编这里推荐大家使用这款软件!...
二维码生成器解码器ZZY.QR是一款免费的二维码生成与解码软件,能够将相关信息生成二维码图片,还可以将二维码解密。支持的信息包含:文本信息、短信、网址、个人名片、电子邮件地址、无线网络信息、电话号码。支持对...
给业务做的一个很简单的小程序winform基于QrCode 功能:字符串转二维码(按每行一个),可以设置logo 源码和编译后程序都放在压缩包里了
可以生成各种各样的彩色二维码,花式二维码
软件介绍: ...全新界面设计增加生成二维码的个性样式增加对新样式的简单绘制,增加了大图片Logo的自动调整并支持等比例增加批量生成可加入Logo,修复纠错等级Bug,修复Logo图片载入Bug优化操作细节
1、只需一点即可生成二维码,并且支持批量生成二维码。 2、可按分类生成:包括文本、短信、网址、名片、邮件、WIFI、电话。 3、生成后还可编辑、绘制二维码,制作更有个性的二维图片。 4、程序提供二维码解码功能...
功能一、基础配置是用来完成中间带Logo图标的配置功能,生成操作中,如果是要带图标时,必需上传; 功能二、单一生成,用户仅要将生成的内容粘贴到文本框中,选择要生成的尺寸(也可以手工指定建议是正方形),是否...
使用Java实现,支持批量生成二维码,支持二维码嵌套Logo
字符串转二维码(按每行一个),可以设置logo 源码和编译后程序都放在压缩包里了
导入 可批量字符串字符串转二维码工具 导入卡号 卡密 上传logo 等功能进行生产对应二维码 只是工具 不获取任何用户信息
单个或者批量生成二维码,即把网址转换成你想要的二维码。可以加自己的LOGO