- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 zxing 生成不同类型的条形码(EAN、2of5 和 DataMatrix)。生成一般工作正常。我目前遇到的唯一问题是 zxing 只生成一个 14x14 像素位图,这太小了。但仅在使用 DataMatrix 时! EAN13、2of5/ITF 和 QR 码与相同的代码完美配合。
我的代码:
BitMatrix bitMatrix = new DataMatrixWriter().encode(message, BarcodeFormat.DATA_MATRIX, 1080, 1080, null);
int height = bitMatrix.getHeight(); //height is always 14, it doesn't matter what value I pass to the encoder
正如您想象的那样,这在像 nexus 5 这样的 1080p 屏幕上看起来很糟糕。我是不是弄错了什么?我是否必须为 DataMatrix 做一些特殊设置?
Google 和 Stackoverflow 帮不了我,因为我找不到任何使用 DataMatrix 的例子
更新这就是我将位矩阵转换为位图的方式
int width = bitMatrix.getWidth();
int height = bitMatrix.getHeight();
int[] pixels = new int[width * height];
// All are 0, or black, by default
for (int y = 0; y < height; y++) {
int offset = y * width;
for (int x = 0; x < width; x++) {
pixels[offset + x] = bitMatrix.get(x, y) ? BLACK : WHITE;
}
}
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
如果我对高度使用任何其他值,我会得到一个 OutOfBoundsException,这是非常明显的(我没想到其他任何事情)...
当我尝试缩放 imageview 并设置固定的宽度和高度时,条形码是可扫描的,但看起来很糟糕。这也很明显,因为位矩阵只有 14x14 而不是我指定的大小。
有没有一种简单的方法可以以某种方式缩放位矩阵?因为它只由点组成,所以应该可以,但我不想自己计算。除了 stackoverflow 之外,我找不到任何关于位矩阵的文档,这对我没有任何帮助。
如果我通过 HintMap 将 MinWidth 或 MaxWidth 传递给编码器,应用程序总是会因异常而崩溃。HintMap(mWidth 是设备的显示宽度,但我尝试了几个值): 哈希表提示图 = 新哈希表();
hintMap.put(EncodeHintType.MIN_SIZE, new Dimension(mWidth, mWidth));
hintMap.put(EncodeHintType.MAX_SIZE, new Dimension(mWidth, mWidth));
hintMap.put(EncodeHintType.DATA_MATRIX_SHAPE, SymbolShapeHint.FORCE_SQUARE);
异常(exception):
java.lang.IllegalArgumentException: Can't find a symbol arrangement that matches the message. Data codewords: 7
在我看来,最后一个问题像是 zxing 中的一个错误。我不明白为什么如果我改变大小生成不起作用。
最佳答案
这是一个小示例,您可以如何更改从 BitMatrix 到 Bitmap 的转换方法。该方法对 BitMatrix 进行缩放。
int BLACK = 0xFF000000;
int WHITE = 0xFFFFFFFF;
// change the values to your needs
int requestedWidth = 300;
int requestedHeight = 300;
int width = bitMatrix.getWidth();
int height = bitMatrix.getHeight();
// calculating the scaling factor
int pixelsize = requestedWidth/width;
if (pixelsize > requestedHeight/height)
{
pixelsize = requestedHeight/height;
}
int[] pixels = new int[requestedWidth * requestedHeight];
// All are 0, or black, by default
for (int y = 0; y < height; y++) {
int offset = y * requestedWidth * pixelsize;
// scaling pixel height
for (int pixelsizeHeight = 0; pixelsizeHeight < pixelsize; pixelsizeHeight++, offset+=requestedWidth) {
for (int x = 0; x < width; x++) {
int color = bitMatrix.get(x, y) ? BLACK : WHITE;
// scaling pixel width
for (int pixelsizeWidth = 0; pixelsizeWidth < pixelsize; pixelsizeWidth++) {
pixels[offset + x * pixelsize + pixelsizeWidth] = color;
}
}
}
}
Bitmap bitmap = Bitmap.createBitmap(requestedWidth, requestedHeight, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, requestedWidth, 0, 0, requestedWidth, requestedHeight);
// I could only test it with BufferedImage and a modified version of the zxing J2SE client
// BufferedImage bitmap = new BufferedImage(requestedWidth, requestedHeight, BufferedImage.TYPE_INT_ARGB);
// bitmap.getRaster().setDataElements(0, 0, requestedWidth, requestedHeight, pixels);
关于android - 使用 zxing 的 DataMatrix 编码仅生成 14px 位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22766017/
我正在上 codeschool,他们告诉我: SORRY, TRY AGAIN transform must be defined last, after the browser prefix sty
我正在使用 SCSS 更改 bootstrap 4 的样式以创建我自己的样式,但是当我编译 SCSS 时出现此错误: { "status": 1, "file": "H:/!WEBSITE/m
在将作为 photoshop 文件给出的网页设计转换为 html+css 时,我对字体大小感到困惑。如下图所示,photoshop 中的 30 px 不等于其他 Windows 程序(Mac 或其他程
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
在我当前的代码中,ul 一直放在页面底部,超过了我的预定义框。 我尝试使用 position:fixed 和 bottom:0 .box { width: 900px; height:
我在 photoshop 中有一个模型,其字体为 60px。我将浏览器中的字体设置为相同的 60px 大小,但浏览器中的字体较小。知道这是为什么吗? 最佳答案 您在 Photoshop 中为您的文本启
我想知道是否有可能仅使用 CSS 获取页面的浏览器/视口(viewport)像素尺寸并将其显示在页面上(最好使用“内容”样式)。我正在为我的一个元素(完全用 CSS 构建)这样做。我知道使用 JS 很
我正在尝试将可变数量的像素计算为与密度无关的像素,反之亦然。 这个公式 (px to dp): dp = (int)(px/(displayMetrics.densityDpi/160)); 不适用于
我在一个带有 1px 边框的容器中有两个 div。我希望每个 div 按宽度正好占据容器的一半,所以我尝试使用 CSS3 的 calc函数从总宽度 (50%) 中减去预定的像素值(2px,div 的每
我正在使用 em 但在嵌套元素中遇到问题所以我决定使用 % 作为 yui建议。 To change the size of a font, always use percentages as the
我有一个元素容器。我想为容纳元素的容器设置最大高度,但如果元素没有填满整个尺寸,则让容器降低其高度。是否可以通过 CSS 实现? 最佳答案 也许使用height: auto。请显示您的 CSS 和 H
我刚刚开始使用 sprites 来减少 HTTP 请求,我在将处理悬停动画的旧脚本转换到新系统时遇到了一些问题。我真的不想为每个按钮设置一个单独的功能,因为这很痛苦,尤其是按钮的数量,即使复制和粘贴也
我正在从头开始创建一个 HTML 页面,并在其中动态放置值,然后将其显示在 WebView 中。 我正在尝试在 WebView(作为 HTML)中复制 ActionBar(出现在应用程序的其他 Act
我希望“蓝色”容器始终为 70 像素高,而之前的“绿色”div 在使用 javascript 调整 div 大小时始终最大化可用高度。 我已经尝试了一段时间,但没有找到合适的解决方案。我们将不胜感激。
我在 Quora 上阅读了以下内容: By setting the font-size of the (which by default its 16px) to 62.5%, setting em
我在关于 http://developer.android.com/guide/practices/screens_support.html 的一些不幸的歧义中迷失了方向,而且我找不到澄清问题的 st
以前做移动端项目的时候都是用rem来做适配,现在基本上都是通过viewport单位来做。 postcss-px-to-viewport就是一个将px单位转换为视口单位的 (vw, vh, vmi
有什么区别: border-right: 1px dotted #CCCCCC; 和: border-right: 1 px dotted #CCCCCC; 有没有? 第二个不正确吗?你需要在 px
我想创建(某种)全 Angular slider ,其中我有一个带有多个子部分的柔性包装器。每个部分100vw排成一排。现在我想每次单击按钮时都将 Flex-wrapper 的 margin-left
在这样的代码中: var a = e.clientX; var b = document.getElementById('someElement').style.left; var z = a - b
我是一名优秀的程序员,十分优秀!