2013-06-19 14 views
6

ImageView'da gösterilecek bir URL'den resim yüklüyorum. standart yol (inputStream is URL'den elde edilmiştir yerde) aşağıdaki gibi bir bit eşlem oluşturmaktır:Android: Tam bir bitmapi yüklemeden ImageView'a anında görüntü akışı nasıl oluşturulur?

Bitmap bm = BitmapFactory.decodeStream(is); 

Ama büyük resimler uğraşıyorum, ben tüm görüntü önce piksel görüntüleme başlatmak istiyor bitmap'e yüklendi, yani görüntünün aşamalı olarak oluşturulmasını istiyorum (web tarayıcılarında büyük resimlerin yüklenmesine benzer). Görüntü örneğin, bir araya sıkıştırılmış PNG ise, bu, tam görüntünün yüklenmesini beklerken kullanıcılara daha düşük kaliteli bir görüntü göstermeme olanak tanır. Temelde, ben o kısa sürede bunları okurken ImageView'ın bitmap'e piksel işlemek için değiştirebilir, olarak http://www.codinghorror.com/blog/2005/12/progressive-image-rendering.html

Ben PNG dekoder uygulamak veya bir opensource uygulamasını kullanabilir miyim diye biliyorum gösterilen rendering ulaşmak istiyoruz ama bu, niyet ettiğim şey için bir mamut çabasına benziyor.

cevap

0

Basit aşamalı olarak alınabilen oluşturma: Bu, iletim ağı katmanı (TCP) dikkate alınarak gerçekleştirilir. Sırayla alınan her paket, hemen görüntülenen uygulama katmanında teslim edilir. Bunu başarmak istiyorsanız, uygulamada soket programlama hakkında düşünmeniz gerekir. Bununla birlikte, bu eski bir yaklaşımdır ve aslında daha fazla hesaplama yoğun olanıdır. Şahsen tercih ederim, bir saplama görüntüsü ile çalışıyorum. Saplama görüntüsü başlangıçta gösterilir ve bir url bağlantısı ve indirme (yönetici veya önbellek) ile bir anlık iş parçacığı başlatılır. İndirme işlemi tamamlandığında, fotoğrafı güncellemek için ana dizinize dönersiniz. Bu daha organize edilebilir.

Lütfen herhangi bir anlamda yanlış olduğumda beni düzeltin.

+0

İlk yaklaşımınızdaki ana sorun, görüntü verilerinin düz piksel olarak gelmemesidir, ancak kullandığım görüntü formatına (ör., PNG) göre sıkıştırılmış ve düzenlenmiştir. Ayrı paketlerle başa çıksam bile, büyük çaba bu verileri görüntülemeden önce piksel renk değerlerine dönüştürmek olurdu, ki bu da söz konusu görüntü formatı için bir kod çözücü yazmayı gerektiriyor (bu bir aşırı sıkıntı olacaktır). Daha basit bir yöntem/kütüphane arıyordum. İkinci yaklaşımınız elbette çok daha kolay. Başka hiçbir şey işe yaramıyorsa bunu yedekleme seçeneğim olarak tuttum :) –

0

Facebook'un Freso projesini deneyin: http://frescolib.org/#streaming Hangi dosya biçimlerini desteklediğinden emin değilim, ancak aşamalı olarak kodlanmış JPEG'lerin aşamalı olarak oluşturulmasını destekliyor.

İlgili konular