Ich verwende den folgenden Code, um ein Bild von einer URL zu erhalten:
URL url=new URL("http://www.google.com/images/logos/ps_logo2.png");
InputStream in=url.openStream();
ByteArrayOutputStream tmpOut = new ByteArrayOutputStream();
byte[] buf = new byte[512];
int len;
while (true) {
len = in.read(buf);
if (len == -1) {
break;
}
tmpOut.write(buf, 0, len);
}
tmpOut.close();
byte[] picture=tmpOut.toByteArray();
System.out.println(picture.length);
Dieser Code ist in Ordnung, aber meine Internetverbindung ist sehr schlecht.
Daher erhalte ich vielleicht ein defektes Bild wie dieses:
Wie kann ich sicherstellen, dass die Bilddatei vollständig ist?
Ich denke, Sie können diesen Code hinzufügen, um dies zu versuchen und zu testen:
if (len == -1) {
ändern zu if (len == -1 || (int)(Math.random()*100)==1 ) {
Vollständiger Testcode:
URL url=new URL("http://www.google.com/images/logos/ps_logo2.png");
InputStream in=url.openStream();
ByteArrayOutputStream tmpOut = new ByteArrayOutputStream();
byte[] buf = new byte[512];
int len;
while (true) {
len = in.read(buf);
if (len == -1 || (int)(Math.random()*100)==1 ) {
break;
}
tmpOut.write(buf, 0, len);
}
tmpOut.close();
byte[] picture =tmpOut.toByteArray();
System.out.println(picture.length);
Danke für die Hilfe :)