2016-07-18 32 views
0

Ich arbeite an einer App, wo ich Bilder aus dem Internet herunterladen und sie in der App anzeigen muss, verwende ich bisher Universal Image Loader, aber vor kurzem ich lief in ein Problem, wo die App nicht die Bilder anzeigen würde, die riesige Größe sind zum Beispiel 700 x 7661, habe ich mehrere Beiträge lesen & Antworten im Zusammenhang damit, aber nichts scheint eine zuverlässige Lösung zu sein, erscheint es in einer hardwarebeschleunigten App Die Bildgröße ist durch die OpenGL-Texturgrößenbeschränkung begrenzt. Antworten hier auf Stackoverflow schlagen vor, das Bild auf eine kleinere Größe zu verkleinern. Ich weiß, das Deaktivieren der Hardwarebeschleunigung behebt es, aber das ist keine Option, da es die ganze App nervös macht.Bitmap zu groß, um in eine Textur hochgeladen zu werden (4096 x 4096)

Meine Frage ist, wie können wir das genau erreichen, weil Geräte unterschiedliche OpenGL Textur Grenze haben, unterstützen einige Geräte 2048 x 2048 und einige Unterstützung 4096 x 4096, einige von ihnen sogar noch kleiner, wenn wir das Bild verkleinern, indem wir die kleinste Größe das Bild wird auf Geräten mit hoher Auflösung verschwommen erscheinen, so bin ich Art von Hinweisen als wie an dieses Problem zu nähern, habe ich versucht Picasso, Fresko & Glide und alle von ihnen haben ähnliche Problem.

Eine Probe des Bildes I ist zu laden versuche http://i.imgur.com/ADpTC2W.jpg?1

Grüße

+0

setzen die Softwareschicht ('View # setLayerType (int layerType, Lackfarbe)') nur zu einer Ansicht, die Ihre Bitmap verwendet, nicht die ganze App – pskink

+0

@pskink wäre das effizient Speicher weise? – TilalHusain

+0

versuchen Sie verschiedene Arten (LAYER_TYPE_NONE, LAYER_TYPE_SOFTWARE) und sehen, wie es Ihre App beeinflusst – pskink

Antwort

0

Sie konnten die maximale Texturgröße aufblicken von Canvas.getMaximumBitmapWidth() und Canvas.getMaximumBitmapHeight() verwenden und dann die Größe, bevor sie in imageViews setzen.

+0

Ich tat, ich folgte der Antwort von Romain Guy hier (http://StackOverflow.com/a/7523221/595603), aber es gibt ungültigen Wert von 32788 – TilalHusain

+0

Das mag zwar eine lange Geschichte sein, aber von dem, was ich gefunden habe, indem ich diese Zahl durch 8 dividiere, gebe ich den richtigen Wert zurück, dh diese Zahl repräsentiert die Anzahl der verfügbaren Bytes –