版本是3.2.1,使用code和javase两个包,生成二维码正常,生成带logo的二维码logo变成黑白,查看源码后问题在于javase包生成BufferedImage时,如果不设置MatrixToImageConfig会使用默认的设置,即空格白,二维码黑色,之后会对图片类型做判断
BufferedImage image = new BufferedImage(width, height, config.getBufferedImageColorModel()); int getBufferedImageColorModel() { if (onColor == BLACK && offColor == WHITE) { // Use faster BINARY if colors match default return BufferedImage.TYPE_BYTE_BINARY; } if (hasTransparency(onColor) || hasTransparency(offColor)) { // Use ARGB representation if colors specify non-opaque alpha return BufferedImage.TYPE_INT_ARGB; } // Default otherwise to RGB representation with ignored alpha channel return BufferedImage.TYPE_INT_RGB; }
如果使用的是默认的空格白0xFFFFFFFF,二维码黑0xFF000000,就会使用BufferedImage.TYPE_BYTE_BINARY类型,即,只有黑白二色的位图
所以这个地方要加logo是彩色的话,要么就不用javase提供的toBufferedImage方法,直接
int bgColor = 0xFF000000; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); for (int x = 0; x < matrix.getWidth(); x++) { for (int y = 0; y < matrix.getHeight(); y++) { image.setRGB(x, y, matrix.get(x, y) ? bgColor : 0xFFFFFFFF); } }
要么设置
MatrixToImageConfig config = new MatrixToImageConfig(0xFF000001, 0xFFFFFFFF);
只要改一点点,背景还是白色的(至少视觉上是)也能加进彩色logo
BufferedImage.TYPE_INT_RGB:8 位 RGB 颜色分量,不带alpha通道。 BufferedImage.TYPE_INT_ARGB:8 位 RGBA 颜色分量,带alpha通道。 BufferedImage.TYPE_INT_ARGB_PRE:8 位 RGBA 颜色分量,已预乘以 alpha。 BufferedImage.TYPE_INT_BGR:8 位 RGB 颜色分量Windows 或 Solaris 风格的图像,不带alpha通道。 BufferedImage.TYPE_3BYTE_BGR:8位GBA颜色分量,用3字节存储Blue、Green和Red三种颜色,不存在alpha。 BufferedImage.TYPE_4BYTE_ABGR:8位RGBA颜色分量,用3字节存储Blue、Green和Red三种颜色以及1字节alpha。 BufferedImage.TYPE_4BYTE_ABGR_PRE:具有用3字节存储的Blue、Green和Red三种颜色以及1字节alpha。 BufferedImage.TYPE_USHORT_565_RGB:具有5-6-5RGB颜色分量(5位Red、6位Green、5位Blue)的图像,不带alpha。 BufferedImage.TYPE_USHORT_555_RGB:具有5-5-5RGB颜色分量(5位Red、5位Green、5位Blue)的图像,不带alpha。 BufferedImage.TYPE_BYTE_GRAY:表示无符号byte灰度级图像(无索引)。 BufferedImage.TYPE_USHORT_GRAY:表示一个无符号short 灰度级图像(无索引)。 BufferedImage.TYPE_BYTE_BINARY:表示一个不透明的以字节打包的 1、2 或 4 位图像。 BufferedImage.TYPE_BYTE_INDEXED:表示带索引的字节图像。
生成png图片必须用带alpha通道的,不然透明的直接变黑.
相关推荐
在Java环境下,使用ZXing生成二维码的步骤如下: 1. 引入ZXing库:在项目中添加ZXing的依赖,通常通过Maven或Gradle来管理。对于Maven,可以在pom.xml文件中添加如下依赖: ```xml <groupId>com.google.zxing</...
2. **添加logo**: 在生成二维码后,我们需要在二维码中心位置插入logo。首先,对logo进行适当的缩放,保持其与二维码尺寸的比例,防止过大影响二维码识别。可以使用Java的`BufferedImage`类进行图片处理,包括缩放、...
1. **生成二维码**:通过调用ZXing提供的API,传入要编码的数据和一些配置参数,如纠错级别(L, M, Q, H),可以生成二维码图像。纠错级别越高,二维码在受损情况下仍能被正确读取的概率越大,但生成的二维码也越大...
在本文中,我们将深入探讨如何在Spring Boot项目中利用ZXing库生成二维码并支持自定义logo。ZXing,全称为“Zebra Crossing”,是一个开源的、多格式的1D/2D条码图像处理库,它能读取、写入多种条码格式,包括二维码...
Google-ZXing(Zebra Crossing)是开源的二维码和条形码处理库,它提供了丰富的功能,包括读取、生成二维码和一维条形码。本实例将详细介绍如何使用ZXing来生成二维码。 首先,ZXing库的引入至关重要。在Java项目中...
- 生成二维码的图像格式(如PNG、JPEG等)可以根据需求选择,ZXing库提供了多种图像输出格式的支持。 总之,ZXingCodeUtils是一个实用的工具,结合了ZXing的强大功能,使得生成个性化二维码变得更加简单。通过合理...
该工具类目前比较简单,只是实现了普通二维码、logo二维码、彩色二维码和二维码条形码解析几个功能。 根据此工具类可扩展生成LOGO+文字的二维码,暂时不需要没有封装。
2. 使用自定义函数:由于iReport本身不直接支持ZXing,我们可能需要编写Java代码片段(在iReport中称为“自定义函数”或“脚本”),利用ZXing API生成二维码图像。 3. 插入图像组件:在报表设计中,添加一个图像...
在本项目中,我们关注的是ZXing在生成二维码和条形码方面的应用。首先,我们可以使用ZXing库的API生成标准的黑白二维码和条形码,这些API通常包括设置数据内容、指定编码格式、调整尺寸等功能。生成过程涉及将输入的...
三、ZXing生成二维码名片步骤 1. 引入ZXing库:首先,你需要在项目中引入ZXing库。对于Java项目,可以通过Maven或Gradle添加依赖;对于Android项目,可以直接在build.gradle文件中添加ZXing的aar包。 2. 创建二维码...
主要是使用google的zxing 生成二维码,可设置logo、二维码前景色/后景色、白边大小、二维码大小 详情:http://blog.csdn.net/rongku/article/details/51872156
利用zxing.dll生成和解码二维码。zxing.dll的简单应用,大家可以用反编译工具查看源码,非常方便就只有一个dll文件直接饮用就可以使用!
看着网上好看的二维码,也想着自己实现一个,经过3周的理论加开发时间,终于实现,...可支持将二维码导出PNG\JPG\Base64\写入流等格式,代码注释详细便于继续扩展,如果希望小编继续扩展的可以留言,小编会及时更新。
- 添加LOGO:独特的功能之一是,Zxing插件允许你将自定义的LOGO集成到二维码中心,提高品牌识别度,同时保持二维码的可读性。 2. **使用Zxing.dll**: - 这个`.dll`文件是Zxing库的动态链接库形式,用于在Windows...
下面是一个简单的Java代码示例,展示了如何使用ZXing生成二维码: ```java import com.google.zxing.*; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import ...
三、使用ZXing生成二维码 1. **Java版**:在Java环境中,可以使用`com.google.zxing.client.j2se.MatrixToImageWriter`类将数据编码为图像。首先,创建一个`BitMatrix`对象来存储编码后的数据,然后调用`...
在这个场景中,我们将关注如何在Java环境下利用ZXing库来生成二维码。下面将详细介绍这个过程。 首先,我们需要在Java项目中引入ZXing库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml ...
在C#项目中,我们可以借助ZXing.Net库来生成二维码,并添加自定义的logo,以提高品牌识别度。 首先,你需要在你的C#项目中引入ZXing.Net库。这可以通过NuGet包管理器完成。在Visual Studio中,右键点击项目,选择...
这是整个项目的核心,它包含了生成二维码图像的逻辑。通过调用ZXing库的相关API,我们可以指定要编码的数据、二维码的错误纠正级别、尺寸等参数,生成基础的二维码图像。然后,该类会将生成的二维码与用户提供的背景...