有色二维码
import java.awt.Color; public class YanSeFormat { // 颜色码转为color对象 public static Color StringToColor(String str) { int i = Integer.parseInt(str.substring(1), 16); return new Color(i); } /** * Color对象转换成字符串 * * @param color * Color对象 * @return 16进制颜色字符串 */ private static String toHexFromColor(Color color) { String r, g, b; StringBuilder su = new StringBuilder(); r = Integer.toHexString(color.getRed()); g = Integer.toHexString(color.getGreen()); b = Integer.toHexString(color.getBlue()); r = r.length() == 1 ? "0" + r : r; g = g.length() == 1 ? "0" + g : g; b = b.length() == 1 ? "0" + b : b; r = r.toUpperCase(); g = g.toUpperCase(); b = b.toUpperCase(); su.append("0xFF"); su.append(r); su.append(g); su.append(b); return su.toString(); } /** * 字符串转换成Color对象 * * @param colorStr * 16进制颜色字符串 * @return Color对象 */ public static Color toColorFromString(String colorStr) { colorStr = colorStr.substring(4); Color color = new Color(Integer.parseInt(colorStr, 16)); return color; } public static void main(String[] args) { Color color = StringToColor("#FF8C00"); // 填颜色码 String aa = toHexFromColor(color); System.err.println(aa); } }
以上为生成16进制的颜色码,用于生成有色二维码(使用到一个zxing的包)
import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Hashtable; import javax.imageio.ImageIO; 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; /** * 需求说明:一个推广二维码对应一类考试信息,微信扫码获取报考详情 * * 需要jar:zxing-code-2.3.jar 下载地址http://download.csdn.net/download/sanfye/8704583 * */ public class ErWeiMa { // 需要注意 颜色码需是16进制字符串 private static final int HUA_SE = 0xFFFF8C00; // 码颜色 private static final int DI_SE = 0xFFEE82EE; // 底色 public static void main(String[] args) { try { boolean flag = generateCode("https://www.baidu.com", "aa"); if (flag) { System.out.println("成功生成二维码"); } } catch (WriterException | IOException e) { System.err.println("生成二维码失败"); e.printStackTrace(); } } /** * url对应所需产品url * * @param url * @param jpgName * 生成二维码名 * @return * @throws WriterException * @throws IOException */ public static boolean generateCode(String url, String jpgName) throws WriterException, IOException { String path = "E:/"; // 图片生成的位置 int width = 400; int height = 400; String tuJpg = "jpg"; // 设置编码,防止中文乱码 Hashtable<EncodeHintType, Object> ht = new Hashtable<EncodeHintType, Object>(); ht.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 设置二维码参数(编码内容,编码类型,图片宽度,图片高度,格式) BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, width, height, ht); // 生成二维码(定义二维码输出服务器路径) File outputFile = new File(path); if (!outputFile.exists()) { // 创建文件夹 outputFile.mkdir(); } int b_width = bitMatrix.getWidth(); int b_height = bitMatrix.getHeight(); // 建立图像缓冲器 BufferedImage image = new BufferedImage(b_width, b_height, BufferedImage.TYPE_3BYTE_BGR); for (int x = 0; x < b_width; x++) { for (int y = 0; y < b_height; y++) { image.setRGB(x, y, bitMatrix.get(x, y) ? HUA_SE : DI_SE); } } // 生成二维码 ImageIO.write(image, tuJpg, new File(path + "/" + jpgName + "." + tuJpg)); // 二维码的名称 // ha.jpg return true; } }
以上为生成二维码代码(需要用到16进制的颜色字符串)