2010-12-11 36 views

Répondre

1

Ce code peut vous aider à

 connection = (HttpConnection) Connector.open(fullUrl.toString(), 
      Connector.READ_WRITE, true); 


     InputStream is = hc.openInputStream(); 

     DataInputStream dis = new DataInputStream(is); 
     ByteArrayOutputStream bStrm = new ByteArrayOutputStream(); 

     int ch; 
     while ((ch = dis.read()) != -1) { 
      // System.out.println((char) ch); 
      // msg = msg + (char) ch; 
      bStrm.write(ch); 
     } 
     bb = bStrm.toByteArray(); 

Cela va générer Tableau d'octets à partir de votre URL de service Web. ici bb est tableau d'octets.

Deux classes gèrent l'image dans BB. EncodedImage et Bitmap, les deux ont des constructeurs qui génèrent des images à partir d'un tableau d'octets. Je recommande d'utiliser Bitmap, il a une capacité de taille de l'image facile.

+0

Merci beaucoup ... je vais sûrement essayer la solution – user469999

3

Je ne suis pas totalement familier avec BB mais comme personne d'autre ne répond à votre question, consultez la classe EncodedImage et la méthode scaleImage32() devrait vous renvoyer la version mise à l'échelle.

+0

Merci pour la réponse .. je vais sûrement le vérifier :) – user469999

+0

+1 et Thumbs up @petteri pour suggestion – Prasham

5

petteri a raison d'utiliser EncodedImage et scaleImage32(). Plus précisément, vous devez utiliser createEncodedImage(byte[] data, int offset, int length) avec les octets renvoyés par le service Web. Sachez que scaleImage32 prend des arguments 'int', mais ce sont des nombres à virgule fixe, contrairement aux nombres à virgule flottante les plus connus. Pour obtenir la valeur de point fixe que vous voulez, utilisez les méthodes utilitaires dans Fixed32

Enfin, si vous n'avez pas besoin de l'image d'origine dans l'application BlackBerry, vous aurez une meilleure expérience globale si le webservice fait la mise à l'échelle. Cela réduira le nombre d'octets transférés sur l'appareil et réduira le calcul effectué sur l'appareil pour mettre à l'échelle l'image. La mise à l'échelle sur le serveur donnera probablement une image mise à l'échelle de meilleure qualité, car scaleImage32() utilise un algorithme assez basique.

+1

Juste pour ajouter à la réponse de Michael, si vous ne pouvez pas mettre à l'échelle sur le serveur et devez le faire dans l'appareil, vous pouvez utiliser les API 5.0 pour faire une meilleure mise à l'échelle en utilisant Bitmap.scaleInto() –

+0

Merci beaucoup ... j'essaierai sûrement la solution – user469999