9
votes

Android: Comment afficher un bitmap dans une vision Web?

J'utilise un webview pour afficher une image semblable à une carte, en raison de la fonctionnalité intégrée de panoramique et de zoom. Cependant, je dois superposer d'autres informations (marqueurs, etc.) à certains points de l'image de la carte et afficher tout cela.

Donc, je prends mon image de carte de base en tant que bitmap et superposez mes autres images sur cela (en utilisant la toile et plus de bitmaps), ce qui me donne un dernier bitmap avec toutes les informations. Parce que je dois éditer l'image au moment de l'exécution, je ne peux pas utiliser un fichier pré-établi. La mise en œuvre de la superposition de bitmaps n'est pas le problème, le problème est que je ne sais pas comment afficher facilement l'image résultante avec des capacités de panoramique et de zoom.

Y a-t-il un moyen d'afficher un bitmap à l'aide d'un webview? Ou toute autre suggestion?


1 commentaires

Il y a de jolies bibliothèques qui soutiennent Panning et Zoom avant Android. Un exemple - Github.com/sephioth74/ImageViewZoom


5 Réponses :


1
votes

Normalement dans Webview, nous pouvons définir les images à l'aide des balises HTML. Ceci ne fera pas de problème.

Toute façon utilise ce lien pour l'exemple de question et réponse

Pourquoi bitmap to base64 string Affichage de fond noir sur webview en Android?


0 commentaires

-2
votes

Vous n'avez pas besoin de bitmap, il suffit de son nom suffit. Essayez Suivi:

webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);


12 commentaires

Ce code est-il pour afficher une image extraite d'une URL? Ce n'est pas ce que j'essaie de faire.


Le code ci-dessus nécessite simplement la voie parfaitement qualifiée de votre image. Essayez de donner imagePath et vérifiez si cela fonctionne.


Donc, je devrais enregistrer mon fichier bitmap modifié en tant que fichier, puis lisez cela?


Vous n'avez pas besoin de sauvegarder votre fichier, il vous suffit de bien obtenir le chemin complet de l'image.


Lorsque vous superposez de nombreuses images sur l'image de la carte, comment vous créez bitmap de ces nombreuses images et comment vous mettez ces images sur l'image de la carte? Si vous pouvez créer un bitmap d'une image, vous pouvez également obtenir son nom. Donc, vous avez juste besoin de récupérer son nom. Mais je voudrais toujours vous demander comment vous allez mettre une image sur l'image de la carte? Ce sera une très bonne information pour moi aussi.


Je pense que cette approche est défectueuse pour moi (superposez des bitmaps pour faire un bitmap), mais j'aimerais savoir exactement ce que je devrais utiliser ici pour le nom / chemin de l'image. Vous parlez littéralement du nom de la variable ou de quelque chose d'autre?


Il y a un malentendu. Mon approche ne supervise pas bitmaps pour en faire un. Je commentais votre question. Dans ce cas, vous avez dit: "Je prends donc ma carte de base comme une image de base comme un bitmap et superposez mes autres images à ce sujet (utilisant la toile et plus de bitmaps), me donnant une finale bitmap avec toutes les informations." Comment vous obtenez cela, que je veux savoir ...


Je recouvre un bitmap sur une autre utilisation: superposé bitmap superposition (bitmap baseimg, bitmap superposition) {bitmap finalImg = bitmap.createbitmap (baseimg.getwidth (), baseimg.getheight (), baseimg.getconfig ()); Canvas Toile = Nouvelle toile (finalImg); canvas.drawbitmap (baseimg, nouvelle matrice (), null); canvas.drawbitmap (superbeimg, nouvelle matrice (), null); retour finalime; } Je n'ai jamais dit que vous aviez des images superposées, tout ce que je demande est la question initiale, comment puis-je obtenir le chemin d'image que vous dites que vous devez utiliser pour afficher l'objet bitmap dans une vision Web?


J'ai cherché un peu comment obtenir le nom de l'image de bitmap, mais je ne le trouve pas. Si, à quel point, vous trouvez le chemin d'image de bitmap, le code que j'ai donné sera définitivement résoudre votre problème, car, j'utilise également le même code pour afficher Bitmap dans WebView. Pouvez-vous me dire, où vous créez BASEIMG? Pouvez-vous obtenir le nom de l'image de là?


Je ne suis pas sûr de quelle forme de nom que vous parlez - si c'est autre chose que le nom de la variable, alors non, je ne peux pas.


Je suppose que Shrikant n'a pas du tout compris la question de l'Op.


Je pense que User1914692 n'a pas du tout compris ma réponse. Si vous le lisez attentivement, je passe la voie à suivre sur WebView, le chemin d'image est un chemin d'image local. Une création de bitmap nécessite des ressources riches, mais dans ce cas, vous n'avez pas à utiliser BitMap du tout. Juste son chemin affichera l'image dans Webview avec le contrôle de zoom intégré.



1
votes

La réponse semble être: non, affichant un objet bitmap local dans une vision Web, sans l'enregistrer dans un fichier, n'est pas possible.


2 commentaires

Faux. Créez une balise IMG pour afficher une image comme des courriels HTML avec des images inlinettes. Utilise tag, mais SRC n'est pas une URL mais la base de données d'image codées de base64. IMG SRC peut toujours être modifié via JavaScript.


Il est possible de charger et d'afficher un bitmap. Vérifiez TeePee Sony Répondre. Cela explique comment faire ça.



31
votes

Utilisation du lien de ITHRAJESH4UGUYS, j'ai créé ce code SNIPPET:

// Desired Bitmap and the html code, where you want to place it
Bitmap bitmap = YOUR_BITMAP;
String html="<html><body><img src='{IMAGE_PLACEHOLDER}' /></body></html>";

// Convert bitmap to Base64 encoded image for web
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
String imgageBase64 = Base64.encodeToString(byteArray, Base64.DEFAULT);
    String image = "data:image/png;base64," + imgageBase64;

// Use image for the img src parameter in your html and load to webview
html = html.replace("{IMAGE_PLACEHOLDER}", image);
webview.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", "");


6 commentaires

Merci pour votre commentaire. vous avez raison. J'ai ajouté une ligne supplémentaire à ma réponse pour expliquer la solution.


et je pense que l'URL de base est hors de propos, cela a fonctionné pour moi avec webview.loaddata aussi


Ici, avec le codage de base-64, il n'y a aucun risque; Mais il est utile de savoir que, sinon, LoadDawithbaseURL est la fonction à appeler, même lorsque l'URL de base n'est pas pertinente (et peut être transmise efficacement comme null). Voir le fil Stackoverflow.com/Questtions/12332929/... .


Comment puis-je faire la même chose avec arrondiebitmapDrawable?


Si quelqu'un a une solution pour éviter le webview, puis après avoir rédigé le bitmap, j'aimerais l'entendre. Il semble être hors de notre contrôle


webview.getsettings (). SetDisplayzoomControls (false); il masquera les zoomcontrols par défaut



2
votes

Vous n'avez pas besoin d'un espace réservé si vous souhaitez charger l'image dans WebView

Vous pouvez charger directement le dataurl dans la View. Pour ex: xxx

espérons que cela aide les autres! : -)


1 commentaires

Il montre le PDF mais quelque chose semble mal avec la luminosité. Dans mon cas c'est trop sombre.