Ich habe eine Anwendung, die ein PNG-Bild von etwas der Benutzer schreiben in das Textfeld ein (benutzerdefinierte Schriftart und Farbe)Erstellen Sie ein Bild von einem Textview (ohne Qualitätsverlust)
Was ich tue, ist etwas schaffen dies wie:
- Set Schriftart, Textfarbe und Text zu einem Textview (BG ist transparent)
den Code unter Verwendung, erzeugen das Bild für das Textview
Bitmap returnedBitmap = Bitmap.createBitmap(textView.getWidth(), textView.getHeight(), Bitmap.Config.ARGB_8888); //Bind a canvas to it Canvas canvas = new Canvas(returnedBitmap); //Get the view's background Drawable bgDrawable =textView.getBackground(); if (bgDrawable!=null) //has background drawable, then draw it on the canvas bgDrawable.draw(canvas); // draw the view on the canvas view.draw(canvas); FileOutputStream out = null; out = new FileOutputStream(new File(filename)); returnedBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
Das Problem ist, dass die Qualität des erzeugten Bildes nicht das gleiche wie ist das, was im Textview angezeigt wird
Gibt es eine Möglichkeit, die Qualität zu verbessern?
Liegt das daran, dass TextView keinen Hintergrund hat? Wenn ja, gibt es einen Workaround dafür? Sie benötigen das erzeugte Bild nur als der Text, daher der transparenten Hintergrund
Dank
Sie einen Screenshot kann http://stackoverflow.com/a/5651242/3257513 – Yoni
Versuchen Sie 'textview.setDrawingCacheEnabled (true); Bitmap-Bitmap = Bitmap.createBitmap (textview.getDrawingCache()); textview.setDrawingCacheEnabled (false); ' –
Ihre Bitmap-Größe hängt von der Breite und Höhe von textView ab, die (neben der Länge von text und textSize) von Bildschirmmetriken abhängt. Zum Beispiel haben Sie für mdpi eine Pixelhöhe von 100 Pixel und für xhdpi eine Pixelhöhe von 200 Pixel. Akzeptieren Sie dieses Konzept oder möchten Sie Bitmap mit strikter Höhe zurückgeben (das hängt nur von textSize ab)? –