nic*_*ick 0 iphone base64 ipad ios
我正在尝试base64编码一个图像以便在iOS上传,但是愚蠢的东西没有内置的支持,所以我下载了两个库并尝试了它们,但我认为它们返回了错误的值(除非我理解base64甚至比我想的还要少. 这个网站返回一个以这个开头的长字符串: /9j/4Q+zRXhpZgAASUkqAAgAAAAKAA4BAgAgAAAAhgAAAA8BAgAFAAAApgAAABABAgAKAA
当我使用我下载的库进行加密时,它从这开始:iVBORw0KGgoAAAANSUhEUgAAAI0AAABnCAIAAACy41YWAABAAElEQVR4AbzdeaylyXUY9nf3
我100%确定第一个是正确的,因为当我使用编写的测试程序来测试服务器时,这是它上传到服务器的相同代码,服务器愉快地解码文件并保存图像.这是测试图像.
基本上,我在想的是我需要为iPhone/iPad建立一个不同的库.我注意到的另一个奇怪的事情是,对于某些图像,=将位于字符串的末尾,而对于其他图像则不会.我可以为此考虑三个原因.
1)iPhone内存不足,不想告诉我它只是上传了它的内容.
2)图书馆坏了
3)我很困惑,也不懂base64
有什么建议?
编辑:iPhone实际上是模拟器,所以我不知道它是否会在计算机之前耗尽内存.我知道android模拟器没有,但我不确定iOS模拟器.
iPhone输出似乎按照标准base64解码(例如此解码)映射到PNG的开头.为您提供(我修剪成"/ 9J/4Q + zRXhpZgAASUkqAAgAAAAKAA4BAgAgAAAAhgAAAA8BAgAFAAAApgAAABABAgAK"是有效的base64长度)另一种选择与FFD8的JPEG SOI标记开始,然后包含文本的Exif所以我愿意说是JPEG.
您是否有可能无意中编码了不同的文件进行比较?
哦,顺便提一下,如果它可以帮助你测试你的工作 - iPhone内置64位解码,但不是很明显.诀窍是创建一个基于64编码的数据URL并要求NSData加载它.例如
NSData *decodedData = [NSData dataWithContentsOfURL:
[NSURL URLWithString:
@"data:;base64,/9j/4Q+zRXhpZgAASUkqAAgAAAAKAA4BAgAgAAAAhgAAAA8BAgAFAAAApgAAABABAgAK"]];
Run Code Online (Sandbox Code Playgroud)
其中data:;base64,直接跟随base64数据.
三年后的附录:由于iOS 7 NSData直接提供,-initWithBase64EncodedString:options:因此不再需要制定数据URL.
| 归档时间: |
|
| 查看次数: |
1385 次 |
| 最近记录: |