我到NSData的和NSData的一個圖像轉換爲使用如何從圖像的nsdata最小化base64字符串的長度?
NSData *imagedata = UIImageJPEGRepresentation(imageView.image, 0.1f);
NSString *c = [NSString base64StringFromData:imagedata];
將fn base64string爲stringconversion
+ (NSString*)base64forData:(NSData*)theData {
const uint8_t* input = (const uint8_t*)[theData bytes];
NSInteger length = [theData length];
static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=";
NSMutableData* data = [NSMutableData dataWithLength:((length + 2)/3) * 4];
uint8_t* output = (uint8_t*)data.mutableBytes;
NSInteger i;
for (i=0; i < length; i += 3) {
NSInteger value = 0;
NSInteger j;
for (j = i; j < (i + 3); j++) {
value <<= 8;
if (j < length) {
value |= (0xFF & input[j]);
}
}
NSInteger theIndex = (i/3) * 4;
output[theIndex + 0] = table[(value >> 18) & 0x3F];
output[theIndex + 1] = table[(value >> 12) & 0x3F];
output[theIndex + 2] = (i + 1) < length ? table[(value >> 6) & 0x3F] : '=';
output[theIndex + 3] = (i + 2) < length ? table[(value >> 0) & 0x3F] : '=';
}
return [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
}
但所得base64string太長,其長度爲300000以上 即
int len = c.length;
len的值超過300000.
的圖像是3至4 MB INFACT予壓縮圖像到0.1F
NSData *imagedata = UIImageJPEGRepresentation(iivv.image, 0.1f);
如何最小化的長度,是有從NSData的base64conversion任何其他代碼?
請使用英文編號。非亞洲人不太可能熟悉'十萬個'。什麼是'0.1f'?此外,是什麼讓你認爲base64字符串是「太長」? – Pete
查看我編輯的問題 – NAZIK
0.1f表示壓縮比例,根據那nsdata大小將減少 – NAZIK