最近在做项目,需求就是要传尽量多的数据,属于一个调研,估计后期会加入到项目里面,二维码其实不推荐放入大量数据,但是需求嘛,拿钱干活,可能后期还会优化,因为目前的画扫描的效率不高,主要直接用的原生的开源库zxing感觉效率不高。
一开始,从数据源下手,进行数据源压缩,首先尝试了hufman编码,huffman主要是一些开源的算法,但是实现从建树到压缩,其实有很大区别,文件我直接上传了,有兴趣的可以看一下:
http://download.csdn.net/detail/shidongdong2012/7354863
我发现这种压缩效率并不高,接着我采用了gzip+base64的组合方式,发现效果比较号:
首先在因为gzip压缩要用到zlib,所以我们要在工程里面加libz.dylib,
然后附上实现gzip的压缩实现:
h文件
#import <Foundation/Foundation.h>
@interface NSData (GZIP)
- (NSData *)gzippedDataWithCompressionLevel:(float)level;
- (NSData *)gzippedData;
- (NSData *)gunzippedData;
@end
- (NSData *)gzippedDataWithCompressionLevel:(float)level
{
if ([self length])
{
z_stream stream;