2012-04-26 1 views
0

En écrivant un programme qui enregistre des images sur Internet, certaines images finissent partiellement en gris. Ou bien c'est juste vraiment l'icône qui est grise car si j'ouvre l'image ce n'est pas du tout gris.L'image enregistrée à partir de l'URL est partiellement grisée

Voici la méthode que j'utiliser pour enregistrer l'image:

public static void saveImage(String imageUrl, String destinationFile) throws IOException{ 
    URL url = new URL(imageUrl); 
    InputStream is = url.openStream(); 
    OutputStream os = new FileOutputStream(destinationFile); 

    byte[] b = new byte[2048]; 
    int length; 

    while ((length = is.read(b)) != -1) { 
     os.write(b, 0, length); 
    } 

    is.close(); 
    os.close(); 
} 

Je crois que le problème est que Im fermer les flux avant que l'image a été entièrement écrit. Est-il possible de vérifier si c'est fait ou quelque chose?

+0

Le code semble correct. Que voulez-vous dire par "l'icône"? Pourriez-vous servir l'image/l'icône avant qu'elle ne soit complètement écrite? Vous voulez attendre que cette méthode saveImage soit terminée. – Thilo

Répondre

1

Ce problème se produit lorsque vous ouvrez le dossier dans Windows Explorer et actualisez en même temps que votre code écrit l'image. Windows va essayer de créer une vignette. Dans la première partie du fichier, tout "headerinfo" est stocké, ainsi les fenêtres sauront quelle est la taille de l'image et tout ça. Comme toutes les données ne sont pas présentes, la vignette deviendra grise pour cette section.

+0

Ah oui vous aviez raison, je me sens tellement bête de le demander ici maintenant _ _ – Topsic

+0

ne vous sentez pas stupide. Il m'a fallu du temps aussi pour découvrir ce comportement :) – amaters

Questions connexes