iOS获取图片的Base64String,兼容Android,java,web,jpg(jpeg),png
呃呃呃……需求的来源又是同学,对!又是!
废话不哆嗦,怎么把一张图在iOS上转一个Base64String出来,稍微了解的,或者随便搜一下,都能搞定一大堆,但是!!!!
自己(iOS)转自己用,完全没问题,但是当你需要和安卓、web端一起用的时候,事情就爆炸了,你可能会发现自己转出的Base64String和别人的不一样,你以为人家错了,可是人家转出来的都一样!!!!!
事情完全不怪你,主要是因为UIImage类,这个类会悄悄地对你读进来的图片进行加工,具体干了啥,我也不知道,但是我知道这步加工会导致你出错,所以类似下面的方法都不可以。
UIImage * img = [UIImage imageNamed:@"test.jpg"];
NSData * data = UIImageJPEGRepresentation(img, 1.0f);
NSString * str = [data base64Encoding];
//base64Encoding首先是这个方法可能即将被苹果废掉,其次,转出的字符串其他平台搞不定
NSString * str2 = [data base64EncodedStringWithOptions:NSDataBase64Encoding76CharacterLineLength];
//这一次,方法对了,注意Options的参数NSDataBase64Encoding76CharacterLineLength,需要选这一个,不幸的的是,还是没法用,因为data的来源是UIImage。
那么到底该怎么办?,答案很简单,不走UIImage,所以下面这一句可以搞定!
NSString *Str = [[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"test.jpg" ofType:nil]] base64EncodedStringWithOptions:NSDataBase64Encoding76CharacterLineLength];
拆开是这样的:
NSString *path = [[NSBundle mainBundle]pathForResource:@"test" ofType:@"jpg"];//图片路径
NSData * data = [NSData dataWithContentsOfFile:path];//所以这里你可以换成网络路径,如下
NSURL * url = [NSURL URLWithString:@"your url string"];//url
NSData * data2 = [NSData dataWithContentsOfURL:url];
NSString * str = [data base64EncodedStringWithOptions:NSDataBase64Encoding76CharacterLineLength];//str 华丽丽的诞生了
综上所述:data的来源很重要,所以尽可能用路径,但是你的需求非得从UIImage中获取data怎么办?
也有办法,先写入文件,再从文件读取data,这可不是脱裤子放屁--找麻烦,简单解释下:
Q:为什么UIImage获取的data转出的Base64String不行?
A:因为UIImage改变了图片的data。
Q:那么写回文件会还原数据么?
A:不会!
Q:那写回去有个P用?!!!
A:道理很简单,虽然写回去的data和原来的data不同了,但是这时候它是一张标准的图了,而不是一个UIImage对象,再从这里获取data,又是标准的图片的data。所以就可以了。
好了 ,上类!!!下载地址:http://files.cnblogs.com/files/kongkaikai/GetImgBase64String.zip
使用方法简直是太简单了!!!!,不解释!!!
NSString * str = [GetImgBase64String getImgBase64StringWithImgFilePath:[[NSBundle mainBundle]pathForResource:@"a" ofType:@"png"]];
NSString * str2 = [GetImgBase64String getImgBase64StringWithImg:[UIImage imageNamed:@"test.jpg"]];
NSString * str3 = [GetImgBase64String getImgBase64StringWithImg:[UIImage imageNamed:@"test.jpg"] Ratio:0.7];
4 //你要是不引入.h,我保证不打死你!!!!!
5 //至于为什么我不写一个知己ImgName,然后把[[NSBundle mainBundle]pathForResource:@"a" ofType:@"png"]自己搞定一遍是怕你随便找个名字就乱用!!!
iOS获取图片的Base64String,兼容Android,java,web,jpg(jpeg),png的更多相关文章
- IOS, Android, Java Web Rest : RSA 加密和解密问题
IOS, Android, Java Web Rest : RSA 加密和解密问题 一对公钥私钥可以使用 OpenSSL创建, 通常 1024位长度够了. 注意: 1. 公钥私钥是BASE64编码的 ...
- Android+Java Web+MySQL实现登录注册
1 前言&概述 这篇文章是基于此处文章的更新,更新了一些技术栈,更加贴近实际需要,以及修复了若干的错误. 这是一个前端Android+后端Java/Kotlin通过Servelt进行后台数据库 ...
- Android获取图片实际大小兼容平板电脑
项目中有个图片在平板电脑中显示特别小的原因.一直苦于没找到原因,也没有平板电脑測试,今天找了个改动分辨率的,编写相关方法最终处理了,记录下比較: 好让以后不造轮子. 主要是获取文章相关图片显示问题.直 ...
- iOS获取图片格式
我们系统使用的一般文件格式有png.jpg.jpeg.GIF.TIFF 等格式: 图片是我们开发过程中最常见的东西,一般每个公司都会有自己的文件服务器,客户端人员都会从文件服务器中获取相关的图片信息: ...
- iOS中图片拉伸,类似Android中的点9图片
UIImage* img=[UIImage imageNamed:@"name.png"];//原图 UIEdgeInsets edge=UIEdgeInsetsMake(, , ...
- iOS:获取图片Alpha图片
-(void)createImages { // Load the alpha image, which is just the same Ship.png image used in the cli ...
- iOS 获取图片某一点的颜色对象(UIColor*)。
- (UIColor *)colorAtPixel:(CGPoint)point { // Cancel if point is outside image coordinates if (!CGRe ...
- Android ListView从网络获取图片及文字显示
上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...
- UIImagePickerController从拍照、图库、相册获取图片
iOS 获取图片有三种方法: 1. 直接调用摄像头拍照 2. 从相册中选择 3. 从图库中选择 UIImagePickerController 是系统提供的用来获取图片和视频的接口: 用UIImage ...
随机推荐
- NDK-r7以上版本部署方法
一.关于NDK: NDK全称:Native Development Kit. 1.NDK是一系列工具的集合. NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和jav ...
- Oracle中not exists 与not in 的使用情况
1.在oracle11g以上版本,oracle已经做了优化,能够自动将in优化成exists方式,因此oracle11g以上版本,使用in和exists效果是一样的. 2.在oracle中,使用not ...
- samba环境搭建
1.安装samba软件 sudo apt-get install samba cifs-utils samba-common 2.创建与windows共享目录 mkdir share chmod 77 ...
- 随便说一说bootstrap-table插件
如题... bootstrap-table插件是一个js的表格插件 找了一下资料发现并没有多少 这里放一下初始化的语法 这里在html中写一个目标table元素 <table id=" ...
- 基础之 window-self-top-opener
今天我都在怀疑,很多项目还用不用iframe这个框架做页面布局. 如果你有兴趣想告诉我,请给我留言. 一. 说明 注:这里top和window.top等价,window是可以省略的,有得情况下不允许省 ...
- Universal-Image-Loader 使用步骤
开源框架利与弊 开源框架给开发者提供了便利,避免了重复造轮子,但是却隐藏了一些开发上的细节,如果不关注其内部实现,那么将不利于开发人员掌握核心技术,当然也谈不上更好的使用它,计划分析项目的集成使用和低 ...
- Android - 折线图
使用Android的canvas,画折线图:代码为: package spt.view; import android.annotation.SuppressLint; import android. ...
- Oracle 11g-R2 SQL Developer连接MSSQL2008
操作系统环境:WINDOWS8.1 工具: Oracle 11g-R2 SQL Developer 网络资源:http://sourceforge.net/project/showfiles.php ...
- iOS开发内购图文教程
2015年最全的内购图文教程,首先是填各种资料,最后是代码,废话不多说,直接上图 ======================第一部分协议=============== 第一步.png 第二步.jpg ...
- ubuntu安装配置搜狗拼音输入法
进入下载目录,在终端执行安装 $sudo dpkg -i sogou_pinyin_linux_1.0.0.0033_amd64.deb 安装过程会出现 依赖关系问题 2 修复依赖关系完成搜狗拼 ...