1

スクリーンショットを撮り、そのローカルパスをwebviewに送信したいので、それが表示されます。webviewがNSBundleから画像を取得できることは知っていますが、このスクリーンショットは動的に作成されます-コードで何かを追加できますか?

私はこのようにそれを試していました:

  UIGraphicsBeginImageContext( webView.bounds.size);    
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();    

    NSString *file = @"myfile.png";
    NSString *directory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0];
    NSString *path = [directory stringByAppendingPathComponent: file];
    [UIImagePNGRepresentation(viewImage) writeToFile:path atomically:YES];

    NSString *function = [NSString stringWithFormat:@"loadImagePlease(%@);",path];
    [ ad stringByEvaluatingJavaScriptFromString:function];

ただし、loadImageFunctionは、file:///またはfile://プレフィックスを使用してアクセスできません。解決策は何ですか?助けてくれてありがとう。

編集:コードに欠落している行を追加しました

解決策:Cyrilleのアドバイスとこのライブラリをエンコードに使用しました:http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html

4

3 に答える 3

1

画像を保存する必要がない場合は、URLを完全にスキップして、画像をに変換しNSDataて直接読み込むことができます。UIWebView

NSData *data = UIImagePNGRepresentation(viewImage);
[myUIView loadData:data MIMEType:@"image/jpeg" textEncodingName:@"UTF-8" baseURL:nil];

更新しました:

ファイルを 保存する必要があるため、を使用NSFileManagerてディレクトリのURLを取得してから、そのURLを使用してファイルに書き込み、ファイルを取得します。

NSURL *pathUrl = [[NSFileManager defaultManager] URLForDirectory:directory inDomains:NSDocumentDirectory appropriateForURL:nil create:NO error:nil];
NSURL *fileUrl = [pathUrl URLByAppendingPathComponent:file];
[UIImagePNGRepresentation(viewImage) writeToURL:fileUrl atomically:YES];
NSString *urlString = [fileUrl absoluteString];
于 2011-08-05T13:51:44.590 に答える
1

それをbase64データURIスキームに変換し、現在行っているようにJavascriptを介して送信します。

someDOMelement.src = 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO 9TXL0Y4OHwAAAABJRU5ErkJggg==)';

于 2011-08-05T14:01:13.003 に答える
0

そのパスに画像を保存していません。

于 2011-08-05T13:48:13.527 に答える