2011-05-25 14 views
47

मैं अपने वेब दृश्य में एक स्थानीय छवि diplay करने के लिए कोशिश कर रहा हूँ में स्थानीय छवि: बजायएंड्रॉयड - वेबव्यू

String data = "<body>" + "<img src=\"file:///android_asset/large_image.png\"/></body>"; 
webview.loadData(data, "text/html", "UTF-8"); 

इस कोड को कुछ भी प्रदर्शित नहीं करता है,:

webview.loadUrl("file:///android_asset/large_image.jpg"); 

यह एक काम करता है , लेकिन मुझे केवल एक तस्वीर न केवल जटिल वेब पेज होना चाहिए।

कोई विचार?

+0

बेहतर आप html फ़ाइल बना सकते हैं और संपत्ति फ़ोल्डर और दो के साथ संपत्ति फ़ोल्डर –

उत्तर

60

लोड HTML फ़ाइल में लापता है और परिसंपत्ति फ़ोल्डर में अपनी छवि को रख दिया और HTML का उपयोग कर कि छवि फ़ाइल पढ़ें।

<html> 
    <table> 
    <tr> 
     <td> 
     <img src="abc.gif" width="50px" alt="Hello"> 
     </td> 
    </tr> 
    </table> 
</html> 

अब इस विधि Webview

में
webview.loadUrl("file:///android_asset/abc.html"); 
+1

वास्तव में मुझे क्या चाहिए, धन्यवाद –

+0

बिल्कुल सही स्पष्टीकरण ... – Mihir

+7

यदि छवि संपत्ति के अन्य फ़ोल्डर में है तो क्या होगा? –

1

मुझे लगता है कि वहाँ एक \ वेब-दृश्य में अपने कोड

String data = "<body>" + "<img src=\\"file:///android_asset/large_image.png\"/></body>";  
+1

से यह उपयोग में डाल दिया "\", ग्रहण संकलित करने के लिए नहीं चाहता है: webview.loadDataWithBaseURL ("नकली: रों मैं एक समाधान पाया : // डब्ल्यू/टी/एफ ", डेटा, माइम टाइप, एन्कोडिंग, शून्य); लगता है कि loadData() buggued है ... –

8

उपयोग कि एचटीएमएल फ़ाइल लोड करें।

mview.loadDataWithBaseURL(folder.getAbsolutePath(), content, "text/html", "windows-1252", ""); 

folder.getAbsolutePath()"file:///android_asset" या सिर्फ "/"

+1

यहां सामग्री क्या है? jhegedus

+0

सामग्री आप इस पूरी लाइन के साथ एक उदाहरण दे सकते हैं की तरह वास्तविक एचटीएमएल पाठ है ... –

25

एक सुविधाजनक तरीका (अक्सर भूल) HTML सामग्री में बेस 64 एम्बेडेड छवियों का उपयोग करने के लिए है हो सकता है। यह मोबाइल वेबकिट ब्राउज़र (आईओएस, एंड्रॉइड ..) पर भी काम करेगा। इस पद्धति का उपयोग की

प्वाइंट यह है कि आप HTML सामग्री पर छवियों को एम्बेड कर सकते हैं, बजाय प्रतिबंधित फाइल सिस्टम के लिए वेबव्यू से छवि लिंक के साथ लड़ने के लिए है।

<img src="data:image/jpg;base64,xxxxxxxxxxxxxxxxxxxxxxxxxxxx"/> 

    xxxxx = base64 encoded string of images bytes 

आप फाइल सिस्टम से (एम्बेडेड बेस 64) छवि डेटा उपलब्ध कराना चाहते हैं, तो आप उदाहरण के लिए कर सकते हैं:

1) एंड्रॉयड उपयोग ContentProvider में - जो बेस 64 प्रारूपित छवि तार प्रदान करेगा।

<img src="content://.............."/> 

2) या फिर आप JSOUP या इसी तरह के डोम पार्सर (वेबव्यू को सेट करने से पहले साथ preprocess एचटीएमएल) और उचित रूप से इनकोडिंग base64 छवि के साथ छवि src समायोजित कर सकते हैं। इस विधि का

नुकसान भूमि के ऊपर का वेब दृश्य के लिए बड़ा एचटीएमएल डेटा proding में base64 स्ट्रिंग के लिए और निश्चित रूप से छवि परिवर्तित करने में शामिल है।

+2

हाय, // ... '। – Derzu

+0

इस तकनीक जहां बुनियादी URL 'फ़ाइल नहीं है अगर WebView loadDataWithBaseURl' है ही उपयोगी है: – rds

44

तुम भी

String data = "<body>" + "<img src=\"large_image.png\"/></body>"; 

webView.loadDataWithBaseURL("file:///android_asset/",data , "text/html", "utf-8",null); 
+0

मुझे लगता है कि यह सबसे तेजी से विधि है, खासकर यदि आप सभी की जरूरत सिर्फ एक छवि प्रदर्शित करने के लिए है। धन्यवाद) –

+0

मैं कोड का उपयोग कर html फ़ाइलें पैदा कर रहा हूँ और परिसंपत्ति फ़ोल्डर में स्थानीय छवियों का उपयोग करने की जरूरत है। अन्य तरीकों का प्रयास किया लेकिन वे काम नहीं किया। आपका पूरी तरह से काम करता है। – Ray

0

enter image description here

webView.loadDataWithBaseURL("file:///android_asset/", sourse, "text/html", "UTF-8", null); 
0

मेरे लिए सबसे अच्छा तरीका एमएस वर्ड में सभी ग्रंथों और छवियों के साथ मेरी .html फ़ाइल बनाने के लिए था कोशिश कर सकते हैं, और एक के रूप में फ़ाइल सहेजें .html फ़ाइल और दोनों .html फ़ाइल को कॉपी और इसी संलग्नक संपत्ति फ़ोल्डर में फ़ोल्डर और webview.loadUrl() को परिसंपत्ति फ़ोल्डर में .html फ़ाइल का पता देने ... यहाँ आपको क्या करना है ...

WebView webview = (WebView) findViewById(R.id.webView1); 

webview.loadUrl("file:///android_asset/learning1/learning1.htm"); 
0

Zain's solution मेरे लिए काम किया। मैं अपने फ़ोल्डर जोड़ने के लिए भूल गया www HTML फ़ाइलें और सीएसएस के अन्य सबफ़ोल्डर और छवियों आदि

webView.loadDataWithBaseURL("file:///android_asset/www/",data , "text/html", "utf-8",null); 

होने ..

0

सबसे सरल और सीधा रास्ता एक html संपादक के साथ एक html फ़ाइल बनाने के लिए है kompozer या जो भी आपको पसंद है।

संपत्ति फ़ोल्डर में अपने html फ़ाइल रखो और webView.loadUrl(filename) कहते हैं। संपत्ति फ़ोल्डर में उन सभी चित्रों को भी शामिल करना चाहिए जिन्हें आप अपनी HTML फ़ाइलों में संदर्भित कर रहे हैं।

सही HTML में पहले से एक तरह से आपकी छवियों के लिए पथ फ़ाइल, कि आप केवल शुद्ध फ़ाइल नाम नीचे दर्ज करें। फ़ाइल नाम आप loadUrl को पारित file:///android_asset/ उपसर्ग के साथ किया जाना चाहिए।

तो चित्र या फ़ाइल को लोड नहीं करता है, कारतूस, हाइफन और अन्य अजीब सामान के लिए फ़ाइल नाम की जाँच करें और फ़ाइल नाम बदल जाते हैं।