【问题标题】:Dynamically loading images in UIImageView from database in objective c从目标c中的数据库动态加载UIImageView中的图像
【发布时间】:2011-04-21 10:11:21
【问题描述】:

我已将图像保存在 BLOB 类型的数据库中。现在我使用 sql stmt 从数据库中提取这些图像并将其保存在 NSData 对象中。看下面的代码sn-p

NSData *img = [[NSData alloc] initWithBytes:sqlite3_column_blob(loadInfostmt, 4)  length: sqlite3_column_bytes(loadInfostmt, 4)];

self.birdImage = [UIImage imageWithData:img];  

获取图像后,我尝试将其设置为 UIImageView 的图像属性以将其加载到图像视图。我使用了以下技术,但似乎没有任何效果。

1.

self.imgPikr = [[UIImageView alloc] initWithImage:brd.birdImage];  
[self.imgPikr setImage:brd.birdImage];   

2.

[self.imgPikr = [[UIImageView alloc] init];    
self.imgpikr.image = brd.birdImage;

3.

   [self.imgPikr = [[UIImageView alloc] init];    
   [self.imgpikr setImage:brd.birdImage];

这里imgPikr是一个UIImageView对象,birdImage是UIImage类的对象。 除图像外,所有其他数据都正确显示在视图中。 我没有任何错误或警告或运行时异常,但仍然无法加载图像。 请告诉我解决方案。一个星期以来,我一直在研究它。但找不到任何工作。 欢迎任何答案或实验。

提前感谢

【问题讨论】:

  • 您是否忽略了将框架分配给 UIImageView 并将其添加到视图的调用?您是否使用 Interface Builder 来创建您的用户界面?
  • 您是在某个时刻将 self.imgPikr 添加到视图中,还是将其声明为 IBOutlet?或两者?还是两者都没有?
  • 能否给我保存图片的代码,能否打印出NSLog(@"%@", image);
  • 我使用界面生成器添加了 UIimageView。 imgPikr 也是一个 IBOutlet 对象。我已确保在界面生成器中的 imgPikr 和 UIImageView 之间建立了连接。
  • 当使用 NSLog 打印图像时 (@" image is%@", self.birdImage);它打印的图像是 .

标签: iphone objective-c sqlite uiimageview uiimage


【解决方案1】:

选项 1 是最好的选择,因为-[UIImageView initWithImage:] 会自动将 imageView 的大小调整为与传递的图像相同的大小(如果使用此初始化程序,setImage: 也不需要)。

但是,正如@Robot K 在 cmets 中指出的那样,您仍然需要添加 self.imgPikr 作为屏幕上可见视图的子视图。

此外,如果您的 imgPikr 属性被声明为 (retain),那么您就有内存泄漏。

【讨论】:

  • 是的(保留)。我应该如何改进它?我应该改用 Copy 吗?如果是,请同时说明原因。
  • @Nitesh autorelease 设置属性之前的新图像视图。原因? -> 阅读内存管理指南:developer.apple.com/library/ios/#documentation/cocoa/Conceptual/…
  • thanx dave 我将更新和升级我的代码。你能就我上面提到的问题提出任何建议吗?感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多