实现zbar扫描二维码的时候就把照片存储出来的办法

业务场景

当实现二维码扫描的时候(用的扫码库是zbar),有时候需要悄悄的整个扫描的照片存储下来,(charles有部分变态业务就是这样)就是说给扫描的图片照个全景照片。

那么代码如何实现的呢?我去StackoverFlow里终于找到了实现办法!

protected  PreviewCallback previewCb = new PreviewCallback() {
		public void onPreviewFrame(byte[] data, Camera camera) {
            try {
                Camera.Parameters parameters = camera.getParameters();
                Size size = parameters.getPreviewSize();
                Image barcode = new Image(size.width, size.height, "Y800");
                barcode.setData(data);
                int result = scanner.scanImage(barcode);

                if (result != 0) {
                    previewing = false;
                    mCamera.setPreviewCallback(null);
                    mCamera.stopPreview();

                    SymbolSet symbolSet = scanner.getResults();

                    for (Symbol sym : symbolSet) {
                        try {
//                            mediaPlayer.start();
                        } catch (Exception ex) {
                            ex.printStackTrace();
                        }
                        if (scanType == LIGHT_BAR_CODE && sym.getType() == Symbol.QRCODE) {
                            SuperToastUtil.showToast(QrcodeCameraActivity.this, "只允许扫描条形码", Toast.LENGTH_LONG);
                            finish();
                            return;
                        } else if (scanType == LIGHT_QR_CODE && sym.getType() != Symbol.QRCODE) {
                            SuperToastUtil.showToast(QrcodeCameraActivity.this, "只允许扫描二维码", Toast.LENGTH_LONG);
                            finish();
                            return;
                        }

                        if (sym.getType() == Symbol.QRCODE) {
                            codeType = LIGHT_QR_CODE;
                        } else {
                            codeType = LIGHT_BAR_CODE;
                        }
                        String code = sym.getData();

						try {

							Size previewSize = camera.getParameters().getPreviewSize();
							YuvImage yuvimage=new YuvImage(data, ImageFormat.NV21, previewSize.width, previewSize.height, null);
							ByteArrayOutputStream baos = new ByteArrayOutputStream();
							yuvimage.compressToJpeg(new Rect(0, 0, previewSize.width, previewSize.height), 80, baos);
							byte[] jdata = baos.toByteArray();
							Bitmap bmp = BitmapFactory.decodeByteArray(jdata, 0, jdata.length);

							BitmapUtil.saveFile(QrcodeCameraActivity.this,bmp, getLogFileNameDateFormat() + ".jpg");

						} catch (Exception e) {
							e.printStackTrace();
						}
                        handleDecodeInternally(code);

					}
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
		}
	};

  

主要用的是zbar 不过zbar这鸟东西 n久没有更新了。一直没有好的库给用,还有zxing,只有这两种扫码库可以用

最终于的代码在这里!:

	try {

							Size previewSize = camera.getParameters().getPreviewSize();
							YuvImage yuvimage=new YuvImage(data, ImageFormat.NV21, previewSize.width, previewSize.height, null);
							ByteArrayOutputStream baos = new ByteArrayOutputStream();
							yuvimage.compressToJpeg(new Rect(0, 0, previewSize.width, previewSize.height), 80, baos);
							byte[] jdata = baos.toByteArray();
							Bitmap bmp = BitmapFactory.decodeByteArray(jdata, 0, jdata.length);

							BitmapUtil.saveFile(QrcodeCameraActivity.this,bmp, getLogFileNameDateFormat() + ".jpg");

						} catch (Exception e) {
							e.printStackTrace();
						}

  

时间: 2024-10-28 15:37:49

实现zbar扫描二维码的时候就把照片存储出来的办法的相关文章

在iOS中使用ZBar扫描二维码

最近在做的项目中需要用到二维码扫描功能,之前在Android中使用过ZXing识别二维码,ZXing也有对应的iOS版本,经过了解,ZBar也是一个常用的二维码识别软件,并分别提供了iOS和Android的SDK可供使用,最终我选择了ZBar进行二维码识别,它的注释清晰,便于使用. ZBar为我们提供了两种使用方式,一种是直接调用ZBar提供的ZBarReaderViewController打开一个扫描界面,另一种方式是使用ZBar提供的可以嵌在其他视图中的ZBarReaderView,实际项目

在iOS中使用ZBar扫描二维码和条形码

最近做了个外包项目,里面用到了二维码扫描和微信支付!之前比较熟悉的是ZXing,但是在Xcode7.1里面发现竟然莫名的不支持,木有办法,从网上查了一下还有一种支持二维码扫描的东西,没错就是接下来我要说的东东,二维码扫描的利器 ZBarSDK.闲言少絮叨,言归正传! 1.下载 ZBarSDK 官网 https://github.com/bmorton/ZBarSDK 2.导入如下框架 3.在AppDelegetem文件中#import "ZBarSDK.h" 并且 在 - (BOOL)

iOS中使用ZBar扫描二维码自定义扫描界面

之前在Android中使用过ZXing识别二维码,ZXing也有对应的iOS版本,经过了解,ZBar也是一个常用的二维码识别软件,并分别提供了iOS和Android的SDK可供使用,最终我选择了ZBar进行二维码识别,它的注释清晰,便于使用. ZBar为我们提供了两种使用方式,一种是直接调用ZBar提供的ZBarReaderViewController打开一个扫描界面,另一种方式是使用ZBar提供的可以嵌在其他视图中的ZBarReaderView,实际项目中我们更可能会使用第二种方式,这可以让我

zBar扫描二维码时闪光灯自动打开问题

相信大家对zBar并不陌生,比较常用的扫描二维码和条形码的第三方库,在这不做过多解释. 我要说的是,有种场景我们在扫描二维码时,周围环境比较阴暗,光线不好,这个时候我们需要去开灯.这个时候的需求是我们如果能打开手机自带的闪光灯就好了. 到这一步并不难,网上也有很多关于打开手机闪光灯的代码,在这里我也贴出来一份: <span style="font-size:14px;">- (void)openLight:(UIButton *)sender { AVCaptureDevi

手机端微信扫描二维码直接打开外部浏览器访问网页的解决办法

想必大家会经常碰到网页链接在微信内无法打开和微信内无法打开app下载页的情况.通常这种情况微信会给个提示 “已停止访问该网址” ,那么导致这个情况的因素有哪些呢,主要有以下四点 1.网页链接被举报次数过多.2.网页含违规内容,含敏感词.3.被腾讯检测系统判断为诱导分享内容.4.转发分享次数达上限 那么上述问题怎么办呢?只要我们实现微信跳转浏览器的功能即可,下面给大家介绍下这个功能的实现方法. 功能目的 生成微信跳转链接,实现微信内置浏览器跳转外部浏览器打开网页. 操作步骤 第一步:打开 Elep

iOS 扫描二维码

扫描二维码的开源库有很多如 ZBar.ZXing等.在此以ZBar作为例子构建二维码扫码应用.首先在github上下载ZBar SDK地址https://github.com/bmorton/ZBarSDK打开压缩包,其中有ZBarSDK 文件夹将ZBarSDK 文件夹包含到项目中来(Finder)(XCode)其中包含一个libzbar.a的静态库接着往项目中添加Framework框架及链接库(动态库.静态库).在项目属性TARGETS?Summary 中找到Linked Frameworks

有个扫描二维码的扩展,还不错

扫描二维码的php扩展,还不错,安装依赖zBar和ImageMagick 通过域名安装 yum install -y ImageMagick ImageMagick-devel 完成后 whereis ImageMagick 可查看安装位置 https://github.com/mkoppanen/php-zbarcode

ios7新增api实现扫描二维码

本来用的ZBar开源库实现的扫描二维码,但是貌似不支持arm64了,也没有在更新. 现在不用适配ios7以下,而iOS新增系统API已支持扫码,参考老外的一篇博客做了个demo,需要的可以参考下 参考博客:http://www.appcoda.com/qr-code-ios-programming-tutorial/ #import <AVFoundation/AVFoundation.h> @interface QRCodeReadController : BaseViewControlle

Android开发学习之基于相机扫描二维码、条形码等

蛰伏半月有余,一直在准备期末考试,期间抽空研究了一些Android的源代码,现在我就把在这其中的一些收获分享给大家. 今天想分享给大家的是二维码扫描.说起二维码,大家一定不会陌生,尤其是微信火了以后,在我们的生活中几乎随处都可以看到二维码的影 子.相关科技媒体甚至把二维码当成是未来移动互联网的入口,因此研究二维码的相关技术就显得意义非凡.目前在移动开发领域,使用最为广泛的二 维码库有两个,分别是ZXing和ZBar,其中ZXing在Android开发中较为常见,而ZBar则在IOS开发中较为常见