2013-03-02 15 views
11

Benim app yüksek çözünürlüklü görüntüleri (yaklaşık 1900 * 2200 px), destek tutam yakınlaştırma göstermek zorunda. Yetersiz bellek hatası önlemek için ben Android tutam zum geniş görüntü, detay kaybetmeden bellek verimli

options.inSampleSize = scale (scale was calculated as Power of 2 as Document) 

kullanarak tam ekran göstermek için görüntüyü deşifre planlıyoruz

Yani ben Resmi hızlı bir şekilde yükleyebilirsiniz ve ekranlar arasında sorunsuz tokatlamak (i ​​kullanılan My görünümüdür TouchImageViewImageView arasında uzanır) (Görüntüler). Ancak, yakınlaştırmayı sıkıştırdığımda, uygulamam ölçeklenmiş görüntüden dolayı ayrıntıları kaybeder. Tam resmi yüklüyorsam, hızlıca veya düzgün bir şekilde yüklenemiyorum, tutam zumdan sonra sürükleyin. Daha sonra, kullanıcı tam olarak yakınlaştırma yapmaya başladığında tam bir görüntü yüklemeyi deniyorum, ancak çok büyük bir görüntü nedeniyle düzgün görüntüyü sürükleyemiyorum. Android galerisi, 8Mpx görüntülerde bile mükemmel bir performans sergiliyor.

Herkes bana yardım edebilir. Şimdiden teşekkürler.

+0

Belki de bu derinden bunu anlamıyorum http://stackoverflow.com/questions/12022675/decode-part-of-jpeg-file – exebook

+0

aradığınızı var ama belki yararlı değil Benim için – Kiradev

+0

Büyük Jpegs'i hızlı bir şekilde görüntülemenin tek yolu (aşamalı olarak), onları aşamalı olarak yüklemek ve sadece gerekli parçaların kodunu çözmektir. Jpeg erişmek için yaygın yolu libjpeg, bu nedenle yukarıdaki bağlantı bir bütün olarak çözmeden jpeg dosyasının aşamalı kısımlarını almak için libjpeg nasıl kullanılacağını tartışır. – exebook

cevap

3

Sorunun uzun zaman önce sorulmuş olduğunu biliyorum, ancak bu cevap diğer insanların bununla mücadele etmesine yardımcı olabilir. Tam olarak aynı sorun vardı. Yerel bir görüntü olsa bile, WebView'u kullanmayı ve görüntünüzü yüklemelisiniz. örnek aşağıdaki kullanmakvarlıklarda bir görüntü yüklemek için için: Ben böyle bir görev için WebView kullanımı çok garip olduğunu itiraf

// Get a WebView you have defined in your XML layout  
WebView webView = (WebView) findViewById(R.id.webView1); 
// Fetch the picture in your folders using HTML    
String htmlData = "<img src=\"my_image.png\">"; 
webView.loadDataWithBaseURL("file:///android_asset/", htmlData, "text/html", "utf-8", null); 
// Activate zooming 
webView.getSettings().setBuiltInZoomControls(true); 

, ben buldum tek çözümdür. En azından bir OOM istisnasını asla alamazsınız.

8

Eski bir soruyu yanıtladığınız için üzgünüz, ancak varyasyonlardan veya harici depolama alanından bir görüntüyü gösteren bir görüntü görünümünü tamamladım ve yakınlaştırmak için çimdiklerken görüntüden daha yüksek çözünürlükte olan karoları yükledim. Yüksek çözünürlük olarak Ekrandaki alanlar için görüntü verileri yüklenmemiş, bellek istisnalarının önüne geçilmelidir.

https://github.com/davemorrissey/subsampling-scale-image-view

+0

Sadece kütüphanenizi kullandım ve kaynak kodunu görüntüledim. Nobel ödülü almalısın! –

+0

küçük ekranlar için çalışıyor (320x480), ama büyük olanlar için çöküyor (1280x800) :(. Ben gerçekten zoom ve kaydırma ile büyük bir görüntü yüklemek için bir çözüme ihtiyacım var. ... – usman

+0

@usman Bu yazdığımdan beri Bir OOME'un hala atılabileceği bazı kenar durumlarını düzeltmek için bazı değişiklikler.Çeşitli kullanıcı, herhangi bir cihazda 20.000x20.000 gibi büyük görüntüleri görüntülemek için görünümü kullanmayı bildirmiştir. –