2017-03-13 2 views
1

Ich versuche, Screenshot einer Ansicht mit getDrawingCache() Methode zu machen. Wenn es Bitmap gibt, haben Bitmap nicht die gleiche Qualität, die ich auf der Anwendung sehen kann. Unten ist der Code den ich benutze:getDrawingCache verzerrte Qualität der Bitmap

view.buildDrawingCache(); 
Bitmap cacheBitmap = view.getDrawingCache(); 
ByteArrayOutputStream streamOut = new ByteArrayOutputStream(); 
cacheBitmap.compress(Bitmap.CompressFormat.PNG, 100, streamOut); 
byte[] bitmapDataArry = streamOut.toByteArray(); 

Ich habe schon ein paar Sachen ausprobiert, die ich von Google und SO bekommen habe. So improve quality of getdrawingcache und improve quality of image. Aber immer noch nicht die pure Bildqualität. Kann jemand irgendeinen Vorschlag über diese oder irgendeine andere Methode für das Nehmen von screenshot haben, ohne Qualität zu verlieren.

Antwort

0

Ich vermute dein Problem ist, dass du einen Screenshot auf einem kleinen Bildschirm Gerät tauchst und dort ist der Zeichnungscache kleiner und deshalb ist der Screenshot selbst kleiner aber sieht ok wegen des Telefonbildschirms aus, der auch klein ist. Wenn Sie dann dieses Bild, das Sie von getDrawingCache haben, auf Ihren Server hochladen und dann versuchen, es auf einem anderen Gerät mit einer höheren Auflösung anzuzeigen, wird die Qualität körnig und pixelig. Wenn Sie in diesem Fall das Originalbild oder die zugeschnittene Version anzeigen, können Sie die Qualität beibehalten.

Es gibt einen weiteren Fall, in dem Ihre Ansicht möglicherweise den alten Cache erhält. Hier können Sie zerstören DrawingCache() und dann buildDrawingCache().

+0

Also, was kann ich dafür tun. Weil wir nicht identifizieren, welche Auflösung der Gerätebenutzer verwendet. Gibt es eine Möglichkeit Screenshots zu machen, ohne von der Bildschirmauflösung abhängig zu sein? –

Verwandte Themen