【发布时间】:2015-10-11 10:00:01
【问题描述】:
当我这样做时
UIImage *photo = [UIImage imageNamed:@"sample_thumbnail.png"];
self.thumbnail.image = photo;
我看到缩略图是PNG,很好。当我通过以下方式转换为 NSData 并返回时:
UIImage *photo = [UIImage imageNamed:@"sample_thumbnail.png"];
NSData *data = UIImagePNGRepresentation(photo);
self.photoData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
self.thumbnail.image = [UIImage imageWithData:[self.photoData dataUsingEncoding:NSUTF8StringEncoding]];
self.photoData 为零。
为什么会这样?
【问题讨论】:
-
1) 您无法将图像数据转换为这样的字符串。 2)您不能将 NSString 值分配给期望 UIImage 的属性。
-
@rmaddy 1:) 为什么不呢? #2 是一个错字。
-
因为数据代表图像数据,而不是 UTF-8 编码的字符串。你需要做一些 base 64 编码。
-
@quantumpotato 1.) 对于
NSData的实例,每个位组合都是有效的。对于 UTF-8 字符串,情况并非如此。除此之外,UTF-8 字符串可以被规范化,改变二进制数据。
标签: objective-c cocoa-touch uiimageview uiimage nsdata