【问题标题】:Thumbnail view of images图像的缩略图视图
【发布时间】:2009-08-01 04:55:55
【问题描述】:

我想在视图控制器中将一些图像显示为缩略图,但我不知道该怎么做。如果可能的话,谁能给我一些想法或示例代码。

【问题讨论】:

  • 您是否曾经投票/将答案标记为已接受??

标签: iphone objective-c


【解决方案1】:

您是在问如何从较大的图像创建缩略图,还是在问如何构建一个可以很好地显示它们的视图控制器?

构建视图控制器:

您可以使用 the Three20 project (description) 中的 TTPhotoViewController,其作用类似于 iPhone 的内置相机胶卷来查看图像。

你可以看看来自苹果的the Scrolling sample code,在this question about using it for thumbnails中提到。

如果您想自己构建一个,您可以考虑使用the moriarty library 中的GridView,或者作为UIScrollView 中的一个大网格,或者在@987654335 中更有效地逐行使用@。 optimized image loading in a UIScrollView上有个问题。

从较大的图像创建缩略图:

缩小图像最简单的代码方法是简单地将其显示在 UIImageView 中,并将框架设置为您想要的较小尺寸 - 它会为您缩放。

如果您想保存缩略图,或关心内存使用情况,您可以创建硬缩放版本。下面的示例代码取自this blog post,可以作为分类方法添加到UIImage

- (UIImage*) imageScaledToSize: (CGSize) newSize {
  UIGraphicsBeginImageContext(newSize);
  [self drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
  UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();

  return newImage;
}

最后,这是masking out round corners on an image上的一个问题,类似于主屏幕上使用的应用程序图标。

添加

使用图片的内置缩略图:

有一个很好的函数叫做CGImageSourceCreateThumbnailAtIndex,它可以理解某些图像数据格式的内置缩略图。您可以在 Apple 的 the Image I/O Programming Guide 中的 Creating a Thumbnail Image from an Image Source 下看到一些有用的示例代码。

【讨论】:

  • 这不会保持图像的一点点纵横比。
  • @Shailesh,通过指定图片的newSize,得到的纵横比完全取决于你。您可以保留旧的纵横比,例如,通过选择浮动“比例”,使 oldSize.width * scale 和 oldSize.height * scale 都适合缩略图可用的房间,然后有效地设置 newSize = oldSize * scale .
【解决方案2】:

缩略图存在多个问题;或许您可以澄清一下您最关心哪些问题?

  1. 如何显示现有图像的较小版本

  2. 如何通过缓存缩略图来加速分页(而不是仅仅动态缩小原件)

  3. 如何让用户翻阅缩略图

  4. 如果您的图像可编辑或用户可以添加到其中,如何将缩略图与原始图像同步

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-14
    • 2010-11-13
    • 1970-01-01
    • 2012-01-27
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多