2016-01-04 30 views
10

Resim içeriği bayt [] formum var. Ama onları Glide ile yüklediğimde kırık görüntüler gösteriliyor. Yaptığım şey aşağıda gösterilmiştir.Görüntü Glide kullanarak bayt dizisi aracılığıyla nasıl yüklenir?

Glide.with(context) 
    .load(imageByteArray) 
    .asBitmap() 
    .placeholder(R.drawable.ic_broken) 
    .into(rowImageView); 

imageByteArray başarıyla kayma kullanmadan bitmap dönüştürür. Yani görüntü bayt dizisi ile yanlış yok.

Lütfen eksik olduğumu bana yol göster. Ben Glide kütüphane com.github.bumptech.glide kullanıyorum Ayrıca

: kayması: 3.6.1 Ve Android destek kitaplığı com.android.support:support-v13:23.0.1

Düzenlendi

Tamam, Yaptığım şey bu.

String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..." 

Yukarıda belirtilen bu dize, web API'sından aldığım gerçek görüntünün baytlarıdır. Yukarıda tanımlandığı kod kayarak için elde edilen bit dizisi "imageByteArray" başvuruyorum daha

Bu

public static byte[] hexStringToByteArray(String s) { 
     int len = s.length(); 
     byte[] data = new byte[len/2]; 
     for (int i = 0; i < len; i += 2) { 
      data[i/2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) 
        + Character.digit(s.charAt(i+1), 16)); 
     } 
     return data; 
} 

gibi bayt dizisi bu dize dönüştürme ediyorum.

+0

kullanarak görüntüye Base64 Dize dönüştürebilir ... ama sadece kör tahminim ... Eğer vermedi olarak Bu bayt dizisini nasıl elde edersiniz ... bu değişkenin bir kapsamı, bir çeşit döngülerde kullanılır .... – Selvin

+0

Anladım. Bu tür yorumlar vermek yerine lütfen doğru cevapla bana yol göster. Teşekkürler –

+0

sonra lütfen doğru soru sor ... bu kod bana bir NOT kırık görüntü formu sağladığından (ben sorudan ve kullandığınız kitaplıklardan kod kullandım) – Selvin

cevap

20

sonradan Glide bu imageByteArray geçmesi Sen

byte[] imageByteArray = Base64.decode(imageBytes, Base64.DEFAULT); 

aracılığıyla bayt dizisine imageBytes Dize dönüştürmek gerekir sizin base64 dize

String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..." 

olduğunu düşünelim.

Glide.with(context) 
    .load(imageByteArray) 
    .asBitmap() 
    .placeholder(R.drawable.ic_broken) 
    .into(rowImageView); 
+0

@Andan Amjad Aynı sorun var, bu snippet'i denedim, ancak hatayı gösterdim, .asBitmap() çözümlemiyor, bana yardımcı olabilir misiniz? – Gibs

2

Sen çoklu kullanım temellerini anlamıyorum çünkü prolly aşağıdaki

Glide.with(context) 
    .load(Base64.decode(base64ImageString, Base64.DEFAULT)) 
    .asBitmap() 
    .placeholder(R.drawable.ic_broken) 
    .into(rowImageView); 
+1

Cevabınız kabul edilene kıyasla ne farklı ?! – Tima

+0

Hiçbir şey, sadece bir tane daha az değişken yapar. –