2017-07-06 1 views
1

J'essaye d'obtenir l'histogramme d'une image en utilisant ce code Displaying a histogram of image data. Normalement cela fonctionne bien quand l'image d'entrée est donnée par url. Mais pendant que je donne l'image du répertoire localjava.net.MalformedURLException: protocole inconnu: f

private BufferedImage getImage() { 
    try { 
     return ImageIO.read(new URL(
      "F:/test.jpg")); 
    } catch (IOException e) { 
     e.printStackTrace(System.err); 
    } 
    return null; 
} 

donne exception,

java.net.MalformedURLException: unknown protocol: f 

Comment résoudre cette exception et obtenir Histogramme d'une image

Répondre

1

Alors que les autres réponses résoudre votre problème technique, vous ne devriez pas utiliser un URL pour cela. Il existe d'autres signatures pour la fonction read, one which takes a File et un which takes an InputStream instead, vous pouvez donc utiliser une des opérations suivantes:

return ImageIO.read(new File("F:/test.jpg")); 
// or 
return ImageIO.read(new FileInputStream("F:/test.jpg")); 
+1

merci ça marche pour moi .. –

1

F:/test.jpg n'est pas une URL valide. Pour les fichiers, l'URL est file://F:/test.jpgfile est le protocole

1

Le protocole n'est pas valide.

Si vous avez besoin de charger un fichier à partir du système de fichiers, vous devez utiliser le file URI scheme

Un URI fichier prend la forme d'file://host/path

host est le nom de domaine complet du système sur Le chemin est un chemin de répertoire hiérarchique de la forme directory/directory/.../name. Si host est omis, il est considéré comme "localhost", la machine à partir de laquelle l'URL est interprétée.

Ainsi, l'URL doit être:

file://F:/test.jpg