2011-09-26 41 views
4

這是可能的嗎?我的應用程序會從服務器上下載一個ZIP文件,我的所有圖像保存在一個這樣的數組:在<img>顯示圖片使用nsdata標記

ZipReadStream *read = [unzipFile readCurrentFileInZip]; 
    NSMutableData *data = [[NSMutableData alloc] initWithLength:info.length]; 
    int bytesRead= [read readDataWithBuffer:data]; 

    if(bytesRead > 0) 
    { 
    [imagesData addObject:data]; 
    [imagesName addObject:info.name]; 
    } 

然後我濾波器W/C UIView的內部和W來顯示圖像C來顯示/圖片在uiwebview中。我像這樣在UI視圖中顯示圖像:

UIImage *imageForThisQuestion = [[UIImage alloc]initWithData:[imagesData  
    objectAtIndex:indexOfThisImage]]; 

這可以在uiview中正常工作。但是如何在uiwebview中顯示一些圖像?我可以在這裏使用標籤嗎?也是我的UIWebView可能出現在以下格式:

"blah blah blah blah <img src...> blah blah blah <img src...>" 

回答

6

你不想在文件中保存一個圖像以便在html中引用它,如< img src =「myimage.png」>,對吧?可以使用data URI scheme到圖像編碼成URI,然後使用img標籤等

< IMG SRC = 「數據:圖像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAAAUA AAAFCAYAAACNbyblAAAAHElEQVQI12P4 // 8/w38GIAXDIBKE0DHxgljNBAAO 9TXL0Y4OHwAAAABJRU5ErkJggg ==」>

閱讀hear如何base64編碼圖像的NSData。

+0

這就是我在發佈我的問題之前想到的,但我希望得到一個不同的方法來解決這個問題:D。無論如何,我認爲編碼NSData的base64速度很慢。有沒有其他的方法可以用來編碼到base64?順便說一句,我只是iOS的新手。 :) – Diffy

+1

@Dffy,另一種方法可能是將圖像保存在文件中,並像往常一樣通過它的文件名在img標籤中引用它。我沒有看到另一種方式。 –

+0

是的..我正在採取這種方法。謝謝! – Diffy

-1

你必須加載具有正確的baseURL的HTML代碼:

NSString *path = [[NSBundle mainBundle] bundlePath]; 
NSURL *baseURL = [NSURL fileURLWithPath:path]; 
[webView loadHTMLString:htmlString baseURL:baseURL]; 

然後,在你的HTML代碼:

<img src="myimage.png"> 
+0

如果圖像僅在內存中,而不在文件中,這將如何工作? –

+0

你說得對,我的回答太快而沒有注意到這個問題。糾正我的答案... – ender

0

對於任何人想要一個快速和清晰的答案和滑閱讀上述提供的整篇文章,這是您要使用的代碼:

NSString* imgInBase64 = [imageObject base64EncodedStringWithOptions:0]; 
NSString* imgSrcValue = [@"data:image/png;base64," stringByAppendingString:imgInBase64] 

和你注入該字符串任何<img src="{{imgSrcValue}}">元素。注意base64EncodedStringWithOptions的0值,它可以幫助您避免產生巨大的Base64字符串的圖像崩潰。您也可以將PNG更改爲任何支持的圖像格式