ios - 如何使用 iOS 为网页创建缩略​​图?

标签 ios thumbnails

我注意到在 Safari 中,如果我通过 Twitter 共享页面,则会生成共享页面的缩略图。

我在 Google 上搜索了一下,发现 AVAssetImageGenerator 包可以创建视频缩略图。有没有类似的方法来创建网页的缩略图?

最佳答案

您可以使用以下方法创建 UIWebView 的缩略图:

UIView *newView = [view snapshotViewAfterScreenUpdates:YES];

或者你也可以使用:

UIGraphicsBeginImageContextWithOptions(myView.bounds.size, NO, 0);

[myView drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

重要!如果你想创建一个 UIWebView 的缩略图,你会发现这样的问题,你截取了屏幕截图并且页面还没有完全加载,所以我建议你在页面加载时或者像我必须做的那样做, 放置一个 javascript 标志来本地调用 iOS 并在这个特定时刻截取屏幕截图。您可以保存缩略图,使用您想要的机制存储它们(例如 coredata 并有一个持久的数据库来快速访问信息)或者您可以使用带有应用程序内部文件夹路径的配置文件,这真的由你决定。但请记住 UIWebView 加载内容的“时间”,因为有时,我们截取屏幕截图,但 View 中没有任何内容,您将始终看到一个空白页面。 不要在 webView:shouldStartLoadWithRequest:navigationType: 中截取屏幕截图:在 webViewDidFinishLoad: 中截取屏幕截图,但请记住,这并不意味着网页已正确加载!您可以有一个 ajax 事件或一个外部 javascript 事件在屏幕上上传内容,但是 UIWebView 可以说它已经加载了,但实际上它还没有加载!所以这就是使用 javascript 标记来本地调用内部函数来截取屏幕截图的原因。

获得屏幕截图后,您必须调整其大小以显示缩略图。例如,您可以使用:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
    //UIGraphicsBeginImageContext(newSize);
    // In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution).
    // Pass 1.0 to force exact pixel size.
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();
    return newImage;
}

(解决方案在 The simplest way to resize an UIImage? 中找到)

但是有几种方法可以做到这一点。我认为最好的方法是添加一个类别并按照您想要的方式调整功能。

希望对你有帮助

关于ios - 如何使用 iOS 为网页创建缩略​​图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867575/

相关文章:

ios - 计算单元格高度的正确方法

ios - Cocoapods/Eureka 编译错误 : linker command failed with exit 1

objective-c - 应用程序显示设备上 facebook SDK 的链接器错误

ios - 访问的背景云台检测(receivedSighting/didArrive/didDepart)?

ios - 使用 iOS 8 在 iPad 上正确呈现 UIAlertController

加载线程时 Android 应用程序崩溃

ios - 在 iOS 中为视频创建缩略图

html - 如何在 Bootstrap 缩略图类中添加自动滚动

android - 从Json Service获取视频的缩略图

swift - 快速在 UICollectionView 上添加 Youtube 缩略图