「java二维码logo」java二维码登录完整代码

博主:adminadmin 2022-11-23 01:52:08 59

本篇文章给大家谈谈java二维码logo,以及java二维码登录完整代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎么使用 java 在二维码中间 加入 logo?

徽标的意思 LOGO是与其它网站链接以及让其它网站链接的标志和门户 在于各个网站之间可以联接。要让其他人走入你的网站,必须提供一个让其进入的门户。而LOGO图形化的形式,特别是动态的LOGO,比文字形式的链接更能吸引人的注意。在如今争夺眼球的时代,这一点尤其重要LOGO即是网站的名片而LOGO的制作方法也和制作普通的图片及动画没什么两样,不同的只是规定了它的大小而已

java生成中间带logo图片二维码,logo图片模糊。请问各位大侠,有啥解决办法???

图片太模糊的话应该是失真了,引用图片的时候设置下img标签的height和width属性与图片的尺寸一致应该就行了,你可以试试看。

java怎么制作彩色艺术二维码

额,java制作不会,制作彩色二维码我是在条码软件上制作的。在条码软件上制作彩色艺术二维码有两种方法,一种是数据库导入,另一种是手动输入,两者都是比较方便的。具体操作如下:

打开条码软件,点击左侧的二维码按钮,在画布上绘制二维码对象,点击上方的数据库按钮,弹出数据库设置对话框,点击添加(选择数据库类型),根据提示点击浏览-测试连接-添加。

双击二维码,在图形属性-条码中,可以选择条码的类型,然后勾选定制,设置定制的行数和列数

在数据源中,分三步添加,先添加二维码、英文状态下的逗号,二维码颜色码。点击添加-确定。

(1)添加二维码,在数据源中,点击修改按钮,在数据对象类型中选择数据库导入,在字段中选择相应的字段会出现对应的内容。(二维码颜色吗导入方法一样)

.值得注意的是,逗号一定要是英文状态下的逗号。

预览效果如下:

java生成的二维码中间logo怎么改成文字

package com.luo.wctweb.util;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

import javax.imageio.ImageIO;

import javax.servlet.http.HttpServletRequest;

import com.google.zxing.BarcodeFormat;

import com.google.zxing.EncodeHintType;

import com.google.zxing.MultiFormatWriter;

import com.google.zxing.WriterException;

import com.google.zxing.common.BitMatrix;

import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

import com.lz.lsf.util.Base64;

/** * @Description: (二维码) * @author:luoguohui * @date:2015-10-29 下午05:27:13 */

public class ZXingCode {

private static final int QRCOLOR = 0xFF000000; //默认是黑色

private static final int BGWHITE = 0xFFFFFFFF; //背景颜色

public static void main(String[] args) throws WriterException

{

try

{

getLogoQRCode("", null, "跳转到百度的二维码");

}

catch (Exception e)

{

e.printStackTrace();

}

}

/** * 生成带logo的二维码图片 * * @param qrPic * @param logoPic */

public static String getLogoQRCode(String qrUrl,HttpServletRequest request,String productName)

{

// String filePath = request.getSession().getServletContext().getRealPath("/") + "resources/images/logoImages/llhlogo.png";

//filePath是二维码logo的路径,但是实际中我们是放在项目的某个路径下面的,所以路径用上面的,把下面的注释就好

String filePath = "C:/Users/luoguohui/Desktop/78310a55b319ebc4fa3aef658126cffc1f17168f.jpg"; //TODO

String content = qrUrl;

try

{

ZXingCode zp = new ZXingCode();

BufferedImage bim = zp.getQR_CODEBufferedImage(content, BarcodeFormat.QR_CODE, 400, 400, zp.getDecodeHintType());

return zp.addLogo_QRCode(bim, new File(filePath), new LogoConfig(), productName);

}

catch (Exception e)

{

e.printStackTrace();

}

return null;

}

/** * 给二维码图片添加Logo * * @param qrPic * @param logoPic */

public String addLogo_QRCode(BufferedImage bim, File logoPic, LogoConfig logoConfig, String productName)

{

try

{

/** * 读取二维码图片,并构建绘图对象 */

BufferedImage image = bim;

Graphics2D g = image.createGraphics();

/** * 读取Logo图片 */

BufferedImage logo = ImageIO.read(logoPic);

/** * 设置logo的大小,本人设置为二维码图片的20%,因为过大会盖掉二维码 */

int widthLogo = logo.getWidth(null)image.getWidth()*3/10?(image.getWidth()*3/10):logo.getWidth(null),

heightLogo = logo.getHeight(null)image.getHeight()*3/10?(image.getHeight()*3/10):logo.getWidth(null);

/** * logo放在中心 */

int x = (image.getWidth() - widthLogo) / 2;

int y = (image.getHeight() - heightLogo) / 2;

/** * logo放在右下角 * int x = (image.getWidth() - widthLogo); * int y = (image.getHeight() - heightLogo); */

//开始绘制图片

g.drawImage(logo, x, y, widthLogo, heightLogo, null);

// g.drawRoundRect(x, y, widthLogo, heightLogo, 15, 15);

// g.setStroke(new BasicStroke(logoConfig.getBorder()));

// g.setColor(logoConfig.getBorderColor());

// g.drawRect(x, y, widthLogo, heightLogo);

g.dispose();

//把商品名称添加上去,商品名称不要太长哦,这里最多支持两行。太长就会自动截取啦

if (productName != null !productName.equals("")) {

//新的图片,把带logo的二维码下面加上文字

BufferedImage outImage = new BufferedImage(400, 445, BufferedImage.TYPE_4BYTE_ABGR);

Graphics2D outg = outImage.createGraphics();

//画二维码到新的面板

outg.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);

//画文字到新的面板

outg.setColor(Color.BLACK);

outg.setFont(new Font("宋体",Font.BOLD,30)); //字体、字型、字号

int strWidth = outg.getFontMetrics().stringWidth(productName);

if (strWidth 399) {

// //长度过长就截取前面部分

// outg.drawString(productName, 0, image.getHeight() + (outImage.getHeight() - image.getHeight())/2 + 5 ); //画文字

//长度过长就换行

String productName1 = productName.substring(0, productName.length()/2);

String productName2 = productName.substring(productName.length()/2, productName.length());

int strWidth1 = outg.getFontMetrics().stringWidth(productName1);

int strWidth2 = outg.getFontMetrics().stringWidth(productName2);

outg.drawString(productName1, 200 - strWidth1/2, image.getHeight() + (outImage.getHeight() - image.getHeight())/2 + 12 );

BufferedImage outImage2 = new BufferedImage(400, 485, BufferedImage.TYPE_4BYTE_ABGR);

Graphics2D outg2 = outImage2.createGraphics();

outg2.drawImage(outImage, 0, 0, outImage.getWidth(), outImage.getHeight(), null);

outg2.setColor(Color.BLACK);

outg2.setFont(new Font("宋体",Font.BOLD,30)); //字体、字型、字号

outg2.drawString(productName2, 200 - strWidth2/2, outImage.getHeight() + (outImage2.getHeight() - outImage.getHeight())/2 + 5 );

outg2.dispose();

outImage2.flush();

outImage = outImage2;

}else {

outg.drawString(productName, 200 - strWidth/2 , image.getHeight() + (outImage.getHeight() - image.getHeight())/2 + 12 ); //画文字

}

outg.dispose();

outImage.flush();

image = outImage;

}

logo.flush();

image.flush();

ByteArrayOutputStream baos = new ByteArrayOutputStream();

baos.flush();

ImageIO.write(image, "png", baos);

//二维码生成的路径,但是实际项目中,我们是把这生成的二维码显示到界面上的,因此下面的折行代码可以注释掉

//可以看到这个方法最终返回的是这个二维码的imageBase64字符串

//前端用 img src="data:image/png;base64,${imageBase64QRCode}"/ 其中${imageBase64QRCode}对应二维码的imageBase64字符串

ImageIO.write(image, "png", new File("C:/Users/luoguohui/Desktop/TDC-" + new Date().getTime() + "test.png")); //TODO

String imageBase64QRCode = Base64.byteArrayToBase64(baos.toByteArray());

baos.close();

return imageBase64QRCode;

}

catch (Exception e)

{

e.printStackTrace();

}

return null;

}

/** * 构建初始化二维码 * * @param bm * @return */

public BufferedImage fileToBufferedImage(BitMatrix bm)

{

BufferedImage image = null;

try

{

int w = bm.getWidth(), h = bm.getHeight();

image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);

for (int x = 0; x w; x++)

{

for (int y = 0; y h; y++)

{

image.setRGB(x, y, bm.get(x, y) ? 0xFF000000 : 0xFFCCDDEE);

}

}

}

catch (Exception e)

{

e.printStackTrace();

}

return image;

}

/** * 生成二维码bufferedImage图片 * * @param content * 编码内容 * @param barcodeFormat * 编码类型 * @param width * 图片宽度 * @param height * 图片高度 * @param hints * 设置参数 * @return */

public BufferedImage getQR_CODEBufferedImage(String content, BarcodeFormat barcodeFormat, int width, int height, MapEncodeHintType, ? hints)

{

MultiFormatWriter multiFormatWriter = null;

BitMatrix bm = null;

BufferedImage image = null;

try

{

multiFormatWriter = new MultiFormatWriter();

// 参数顺序分别为:编码内容,编码类型,生成图片宽度,生成图片高度,设置参数

bm = multiFormatWriter.encode(content, barcodeFormat, width, height, hints);

int w = bm.getWidth();

int h = bm.getHeight();

image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);

// 开始利用二维码数据创建Bitmap图片,分别设为黑(0xFFFFFFFF)白(0xFF000000)两色

for (int x = 0; x w; x++)

{

for (int y = 0; y h; y++)

{

image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE);

}

}

}

catch (WriterException e)

{

e.printStackTrace();

}

return image;

}

/** * 设置二维码的格式参数 * * @return */

public MapEncodeHintType, Object getDecodeHintType()

{

// 用于设置QR二维码参数

MapEncodeHintType, Object hints = new HashMapEncodeHintType, Object();

// 设置QR二维码的纠错级别(H为最高级别)具体级别信息

hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);

// 设置编码方式

hints.put(EncodeHintType.CHARACTER_SET, "utf-8");

hints.put(EncodeHintType.MARGIN, 0);

hints.put(EncodeHintType.MAX_SIZE, 350);

hints.put(EncodeHintType.MIN_SIZE, 100);

return hints;

}

}

class LogoConfig

{

// logo默认边框颜色

public static final Color DEFAULT_BORDERCOLOR = Color.WHITE;

// logo默认边框宽度

public static final int DEFAULT_BORDER = 2;

// logo大小默认为照片的1/5

public static final int DEFAULT_LOGOPART = 5;

private final int border = DEFAULT_BORDER;

private final Color borderColor;

private final int logoPart;

/** * Creates a default config with on color {@link #BLACK} and off color * {@link #WHITE}, generating normal black-on-white barcodes. */

public LogoConfig()

{

this(DEFAULT_BORDERCOLOR, DEFAULT_LOGOPART);

}

public LogoConfig(Color borderColor, int logoPart)

{

this.borderColor = borderColor;

this.logoPart = logoPart;

}

public Color getBorderColor()

{

return borderColor;

}

public int getBorder()

{

return border;

}

public int getLogoPart()

{

return logoPart;

}

}

java怎么生成带logo二维码

1、下载生成二维码所需要的jar包qrcode.jar;

2、直接上生成二维码的java代码

 

//需要导入的包

import java.awt.Color;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.File;

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

 

/** 

     * 生成二维码(QRCode)图片 

     * @param content 二维码图片的内容

     * @param imgPath 生成二维码图片完整的路径

     * @param ccbpath  二维码图片中间的logo路径

     */  

    public static int createQRCode(String content, String imgPath,String ccbPath) {  

        try {  

            Qrcode qrcodeHandler = new Qrcode();  

            qrcodeHandler.setQrcodeErrorCorrect('M');  

            qrcodeHandler.setQrcodeEncodeMode('B');  

            qrcodeHandler.setQrcodeVersion(7);  

  

            // System.out.println(content);  

            byte[] contentBytes = content.getBytes("gb2312");  

            //构造一个BufferedImage对象 设置宽、高

            BufferedImage bufImg = new BufferedImage(140, 140, BufferedImage.TYPE_INT_RGB);  

            Graphics2D gs = bufImg.createGraphics();  

  

            gs.setBackground(Color.WHITE);  

            gs.clearRect(0, 0, 140, 140);  

  

            // 设定图像颜色  BLACK  

            gs.setColor(Color.BLACK);  

  

            // 设置偏移量 不设置可能导致解析出错  

            int pixoff = 2;  

            // 输出内容  二维码  

            if (contentBytes.length  0  contentBytes.length  120) {  

                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,120 ]. ");  

                return -1;

            }  

            Image img = ImageIO.read(new File(ccbPath));//实例化一个Image对象。

            gs.drawImage(img, 55, 55, 30, 30, null);

            gs.dispose();  

            bufImg.flush();  

  

            // 生成二维码QRCode图片  

            File imgFile = new File(imgPath);  

            ImageIO.write(bufImg, "png", imgFile);  

  

        }catch (Exception e){  

            e.printStackTrace();  

            return -100;

        }  

        return 0;

    }

来自网友 孤独青鸟的博客

关于java二维码logo和java二维码登录完整代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。