0

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

私はこのようにそれをしようとしていた。

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は、ファイルと、それにアクセスすることはできません:///またはファイル://接頭辞。解決策は何ですか? ありがとうございました。

編集:コードに

SOLUTIONを欠落している行を追加しました:あなたはそのパスにイメージを保存していないhttp://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html

答えて

1

それはbase64 data URI schemeに変換し、JavaScriptでそれを送信:私はちょうどそれを消去し

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

+0

ありがとう、それは動作します! – Piotr

+0

コースは動作します;) – Cyrille

+0

ちょっと質問があります。モバイルSafariはローカルファイル自体にアクセスできません。だから私たちはそのようなバイパスが必要ですか? – Piotr

0

:私は、シリルのアドバイスやエンコーディングのため、このライブラリを使用していました。

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

を:あなたは画像を保存する必要がない場合、あなたはNSDataに変換することができますし、完全にURLをスキップし、直接UIWebViewをロード

+0

コメントを除去しながら - 私のせいに。 Safari Mobileは、file:///プロトコルを持っていないようです。問題はどこですか? – Piotr

1

あなたがを行うので、ファイルを保存する必要がある場合は、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]; 
あなたが現在やっているよう
+0

悲しいことに私はイメージだけを見せたくありません。それはウェブサイトのほんの一部でなければならず、私はappからすべてのhtml&css&jsコードを読み込むことができません。ローカルファイルへのパスだけが必要です。 – Piotr

+0

pathUrlは、NSURL * pathUrl = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSDocumentDirectory appropriateForURL:nil create:NOエラー:nil]のようにはなりません。とにかく - それをロードしたくない。 – Piotr

関連する問題