怎么批量保存qq相册图片收钱二维码图片到相册

10881人阅读
android(33)
Zxing图片识别 从相册选取二维码图片进行解析总结&
在Zxing扫描识别和图片识别的解析对象是相同的
本文分三个步骤:
1 获取相册的照片
2 解析二维码图片
3 返回结果
1) 获取相册照片
google对4.4的uri做了点改动& 为了适配多种手机 需要做一个判断版本
在Activity中开启相册:
Intent innerIntent = new Intent(); // &android.intent.action.GET_CONTENT&
if (Build.VERSION.SDK_INT & 19) {
innerIntent.setAction(Intent.ACTION_GET_CONTENT);
innerIntent.setAction(Intent.ACTION_OPEN_DOCUMENT);
innerIntent.setType(&image/*&);
Intent wrapperIntent = Intent.createChooser(innerIntent, &选择二维码图片&);
CaptureActivity.this
.startActivityForResult(wrapperIntent, REQUEST_CODE);
选中了照片后返回的数据在onActivityResult方法中获取
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_CODE:
String[] proj = { MediaStore.Images.Media.DATA };
// 获取选中图片的路径
Cursor cursor = getContentResolver().query(data.getData(),
proj, null, null, null);
if (cursor.moveToFirst()) {
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
photo_path = cursor.getString(column_index);
if (photo_path == null) {
photo_path = Utils.getPath(getApplicationContext(),
data.getData());
Log.i(&123path
Utils&, photo_path);
Log.i(&123path&, photo_path);
cursor.close();
new Thread(new Runnable() {
public void run() {
Result result = scanningImage(photo_path);
// String result = decode(photo_path);
if (result == null) {
Looper.prepare();
Toast.makeText(getApplicationContext(), &图片格式有误&, 0)
Looper.loop();
Log.i(&123result&, result.toString());
// Log.i(&123result&, result.getText());
// 数据返回
String recode = recode(result.toString());
Intent data = new Intent();
data.putExtra(&result&, recode);
setResult(300, data);
}).start();
上面这段代码
&&1& 根据返回的照片信息& 获取图片的路径photo_path
&&2& 开启一个解析线程调用解析方法Result result = scanningImage(photo_path);&&&&& 将photo_path传进去
&&3& 对返回的解析的Result对象进行判断,获取字符串&&&
&&4& 调用recode对result数据进行中文乱码处理&&&&&&&&&&(& 具体在步骤3中说明&& )
String recode = recode(result.toString());
&&5&这里我将result 通过setResult(); 返回给了 父Activity&&&
&6& Utils.getPath(getApplicationContext(),&&data.getData());&&& //将图片Uri 转换成绝对路径
public class Utils {
public static final boolean isChineseCharacter(String chineseStr) {
char[] charArray = chineseStr.toCharArray();
for (int i = 0; i & charArray. i++) {
// 是否是Unicode编码,除了&?&这个字符.这个字符要另外处理
if ((charArray[i] &= '\u0000' && charArray[i] & '\uFFFD')
|| ((charArray[i] & '\uFFFD' && charArray[i] & '\uFFFF'))) {
* Get a file path from a Uri. This will get the the path for Storage Access
* Framework Documents, as well as the _data field for the MediaStore and
* other file-based ContentProviders.
* @param context
The context.
* @param uri
The Uri to query.
* @author paulburke
public static String getPath(final Context context, final Uri uri) {
final boolean isKitKat = Build.VERSION.SDK_INT &= Build.VERSION_CODES.KITKAT;
// DocumentProvider
if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
// ExternalStorageProvider
if (isExternalStorageDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(&:&);
final String type = split[0];
if (&primary&.equalsIgnoreCase(type)) {
return Environment.getExternalStorageDirectory() + &/&
+ split[1];
// TODO handle non-primary volumes
// DownloadsProvider
else if (isDownloadsDocument(uri)) {
final String id = DocumentsContract.getDocumentId(uri);
final Uri contentUri = ContentUris.withAppendedId(
Uri.parse(&content://downloads/public_downloads&),
Long.valueOf(id));
return getDataColumn(context, contentUri, null, null);
// MediaProvider
else if (isMediaDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(&:&);
final String type = split[0];
Uri contentUri =
if (&image&.equals(type)) {
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
} else if (&video&.equals(type)) {
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
} else if (&audio&.equals(type)) {
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
final String selection = &_id=?&;
final String[] selectionArgs = new String[] { split[1] };
return getDataColumn(context, contentUri, selection,
selectionArgs);
// MediaStore (and general)
else if (&content&.equalsIgnoreCase(uri.getScheme())) {
return getDataColumn(context, uri, null, null);
else if (&file&.equalsIgnoreCase(uri.getScheme())) {
return uri.getPath();
* Get the value of the data column for this Uri. This is useful for
* MediaStore Uris, and other file-based ContentProviders.
* @param context
The context.
* @param uri
The Uri to query.
* @param selection
(Optional) Filter used in the query.
* @param selectionArgs
(Optional) Selection arguments used in the query.
* @return The value of the _data column, which is typically a file path.
public static String getDataColumn(Context context, Uri uri,
String selection, String[] selectionArgs) {
Cursor cursor =
final String column = &_data&;
final String[] projection = { column };
cursor = context.getContentResolver().query(uri, projection,
selection, selectionArgs, null);
if (cursor != null && cursor.moveToFirst()) {
final int column_index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(column_index);
} finally {
if (cursor != null)
cursor.close();
* @param uri
The Uri to check.
* @return Whether the Uri authority is ExternalStorageProvider.
public static boolean isExternalStorageDocument(Uri uri) {
return &com.android.externalstorage.documents&.equals(uri
.getAuthority());
* @param uri
The Uri to check.
* @return Whether the Uri authority is DownloadsProvider.
public static boolean isDownloadsDocument(Uri uri) {
return &com.android.providers.downloads.documents&.equals(uri
.getAuthority());
* @param uri
The Uri to check.
* @return Whether the Uri authority is MediaProvider.
public static boolean isMediaDocument(Uri uri) {
return &com.android.providers.media.documents&.equals(uri
.getAuthority());
2) 解析二维码图片
protected Result scanningImage(String path) {
if (TextUtils.isEmpty(path)) {
// DecodeHintType 和EncodeHintType
Hashtable&DecodeHintType, String& hints = new Hashtable&DecodeHintType, String&();
hints.put(DecodeHintType.CHARACTER_SET, &utf-8&); // 设置二维码内容的编码
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = // 先获取原大小
scanBitmap = BitmapFactory.decodeFile(path, options);
options.inJustDecodeBounds = // 获取新的大小
int sampleSize = (int) (options.outHeight / (float) 200);
if (sampleSize &= 0)
sampleSize = 1;
options.inSampleSize = sampleS
scanBitmap = BitmapFactory.decodeFile(path, options);
RGBLuminanceSource source = new RGBLuminanceSource(scanBitmap);
BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source));
QRCodeReader reader = new QRCodeReader();
return reader.decode(bitmap1, hints);
} catch (NotFoundException e) {
e.printStackTrace();
} catch (ChecksumException e) {
e.printStackTrace();
} catch (FormatException e) {
e.printStackTrace();
3) 返回结果
首先对result判断是否为空& ,如果为空就代表& 二维码不标准或者不是二维码图片
在子线程中使用Toast 需要初始化looper&
Result result = scanningImage(photo_path);
// String result = decode(photo_path);
if (result == null) {
Looper.prepare();
Toast.makeText(getApplicationContext(), &图片格式有误&, 0)
Looper.loop();
Log.i(&123result&, result.toString());
// Log.i(&123result&, result.getText());
// 数据返回
String recode = recode(result.toString());
Intent data = new Intent();
data.putExtra(&result&, recode);
setResult(300, data);
Result 对象返回的就是二维码扫描的结果&&&
调用recode(result.toString) 方法进行中文乱码处理&&&& 代码如下:
private String recode(String str) {
String formart = &&;
boolean ISO = Charset.forName(&ISO-8859-1&).newEncoder()
.canEncode(str);
if (ISO) {
formart = new String(str.getBytes(&ISO-8859-1&), &GB2312&);
Log.i(&1234
ISO8859-1&, formart);
Log.i(&1234
stringExtra&, str);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
处理好之后将结果字符串 返回给父Activity
对于图片识别&有些事项需要注意..
二维码的图标需要保证图片尽量不倾斜&&& 拍照的时候 最好保证手机与二维码 水平
希望对您有用 不足之处请指出 &谢谢
资源下载地址:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:446886次
积分:4930
积分:4930
排名:第3119名
原创:85篇
评论:221条
文章:22篇
阅读:197263
(2)(1)(1)(5)(2)(4)(3)(3)(1)(5)(11)(3)(23)(5)(2)(6)(10)(2)(1)前景色前景色渐变无渐变圆形渐变斜线渐变反斜线渐变水平渐变垂直渐变渐变色前景图背景色背景图&素材
液化二维码容错率外边距图片大小透明度旋转角度码眼外框码眼内框码眼样式LOGO图片原图
添加文字 确定&&&&
清除字体大小字体颜色效果默认文字效果描边内融合外融合拉伸3D效果发光字体-默认字体-宋体隶书黑体楷体_GB2312幼圆微软雅黑华文彩云方正舒体&素材
VIP模板 二维码内容设置类型文本微信/QQ/微博上传文件网址名片电话邮箱短信淘宝店铺或宝贝WIFI 无线网络图文编辑器输入内容网址名字手机工作电话家庭电话邮箱公司职位主页工作地址家庭地址备注QQ:手机/电话邮箱地址手机号码短信内容SSID/无线账号密码密码类型WPA/WPA2WEP无密码是否隐藏了SSID的网络iOS系统 ( App Store ID )安卓系统 ( 应用宝ID )输入淘宝店铺或宝贝网址生成淘宝二维码的好处微信禁止跳转淘宝店铺,普通二维码无法在微信中直接打开。Wwei二维码会自动提示,防止用户流失。上传图片,生成相册点击选择文件开始上传图片(jpg、jpeg、gif、png)文档(txt、doc/x、xls/x、ppt/x)媒体(mp3、mp4、flv、swf)附件(zip、rar、tar、gz、7z)单文件大小:50M,游客:5M&&&&&&&&超大文件请用 上传原二维码图片解析开始上传图片:jpg、jpeg、gif、png大小:2M活码使用量过多,被微信屏蔽,暂停使用,恢复另外通知 生成保存二维码提示:如果生成后又对二维码进行调整,需要再次保存,查看时需要刷新缓存( ctrl + f5 )&& 技巧提示:当设有LOGO、添加文字、遮档二维码而不能识别时,请调整提高" 格式
浏览器:目前支持 IE9+、谷歌浏览器、火狐浏览器等高级浏览器,其它用户请更新获得更好效果
8b,dPPYba,
88a8PPPP8b,
a8P_____88
"PPPPPP"88
8PP"""""""& 微商水印大师-最in的免费批量加水印、二维码、贴图相机软件,天天向商的营销作图必备神...
微商水印大师-最in的免费批量加水印、二维码、贴图相机软件,天天向商的营销作图必备神器
document.write(infostr);
我站仅对该软件提供链接服务,该软件内容来自于第三方上传分享,版权问题均与我站无关。如果该软件触犯了您的权利,请点此 。
和你一样,我们也曾是个人电商从业者,从最初在淘宝京东开店,到通过微博、微信、QQ空间、QQ群营销,几经折腾,深知其中不易。这个过程中,互联网从业背景使得我们比起一般微商个体做得更顺畅,也小有收获。看到很多每天在朋友圈不停发图片发链接但不得要领的微商们,也看到一些不良商家忽悠的所谓加粉神器什么云之类的,我们决定把我们的经验和技能贡献出来,做了这款水印大师,希望能帮到大家。第一个版本,我们做了最重要的功能:1.免费制作水印自定义水印内容,支持1次性给50张图片添加水印;2.图片加二维码每一张图片都可以长按关注,每一次转发都能转化用户;3.微商常用贴纸“新品”、“特卖”、“包邮”、“招代理”,常用的都有,不够我们再加;我们只做微商最需要的功能,期待您的建议。意见反馈请联系QQ:免费做水印加公众号:微商水印大师
评论可能会在缓存5分钟后显示
同类热门推荐
开发商的其他应用
回复可能会在缓存5分钟后显示
&&增值电信业务经营许可证闽[号
厦门同步网络有限公司、厦门同步掌上互娱软件技术有限公司&&版权所有&&
地址:厦门市思明区软件园二期望海路10号之三3F&&
同步助手是最安全易用的苹果手机助手,是iPhone、iPad、iTouch的管理工具,可以下载游戏、软件、壁纸、铃声资源,玩苹果就用同步助手!
本功能所涉及内容均由CP提供,提供内容的CP已承诺承担由于内容的合法性及健康性所引起的争议和法律责任。当下软件园 / 汇聚当下最新最酷的软件下载站!
热门搜索:
您的位置:
> 手机qq照片墙设置方法 手机qq照片墙怎么弄
手机qq照片墙设置方法 手机qq照片墙怎么弄
手机qq照片墙怎么设置?看见朋友的QQ照片墙可以更换各种照片而自己的却是默认图片,显得很low~那么小编今天就来告诉大家手机qq2015照片墙怎么传照片。
1、登录手机QQ2015
2、进入手机QQ主界面以后,直接点击左上方自己的QQ头像,呼出左侧的菜单项目,然后再次点击QQ头像。
3、接下来,我们便进入自己手机QQ的资料页面设置,在资料页面设置中,点击最右下方的&个性名片&按钮,然后进入个性名片设置界面。
4、在个性名片设置界面中,我们直接点击&自定义&菜单项,然后进入自定义菜单设置项目。
5、接下来弹出的页面中可看到&照片墙&设置菜单,点击照片墙按钮。
6、进入照片墙设置界面以后,点击界面中出现的&+&按钮,我们可以通过上传多张照片来进行拼图操作。
7、接下来就是选择照片啦,这里有两种照片上传方式:&手机照片&和&空间相册&。
8、只有≧3张照片的时候我们才可以执行拼图操作,所以建议大家选择三张或者是三张以上的照片作为照片墙中的图片。
9、接下来,请大家点击界面中上方出现的&拼图&按钮,使拼图功能处于开启状态,然后软件将自动执行拼图操作,我们点击最下方的&使用&按钮,使用当前的照片作为照片墙,然后就可以自动保存设置了。
类别:聊天社交 &&大小:22.96M &&&语言:简体中文
现在很流行网络电话,它带给我们方便的同时,也能省去一大笔电话费。手机QQ也推出的网络电话功能,只不过很多用户不知道在哪里查找,或者不知道怎么用,今天小编就这个问题给大家讲解一下QQ电话使用教程!
Copyright (C)
.All rights reserved.}

我要回帖

更多关于 微信收钱二维码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信