Fix heightmap brush with imgur images (#2680)

fix: heightmap brush with imgur / remote images
This commit is contained in:
Pierre Maurice Schwang 2024-04-12 20:55:40 +02:00 committed by GitHub
parent d0b676210b
commit a0ef151341
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 11 deletions

View File

@ -554,8 +554,15 @@ public class MainUtil {
}
public static BufferedImage readImage(URL url) throws IOException {
try (final InputStream stream = readImageStream(url.toURI())) {
return readImage(stream);
} catch (URISyntaxException e) {
throw new IOException("failed to parse url to uri reference", e);
}
}
public static InputStream readImageStream(final URI uri) throws IOException {
try {
final URI uri = url.toURI();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder(uri).GET();
if (uri.getHost().equalsIgnoreCase("i.imgur.com")) {
@ -566,16 +573,13 @@ public class MainUtil {
requestBuilder.build(),
HttpResponse.BodyHandlers.ofInputStream()
);
try (final InputStream body = response.body()) {
final InputStream body = response.body();
if (response.statusCode() > 299) {
throw new IOException("Expected 2xx as response code, but received " + response.statusCode());
}
return readImage(body);
}
return body;
} catch (InterruptedException e) {
throw new IOException("request was interrupted", e);
} catch (URISyntaxException e) {
throw new IOException("failed to parse url to uri reference", e);
}
}

View File

@ -176,8 +176,8 @@ public class ImageUtil {
}
public static BufferedImage load(URI uri) throws InputParseException {
try {
return MainUtil.readImage(getInputStream(uri));
try (final InputStream stream = getInputStream(uri)) {
return MainUtil.readImage(stream);
} catch (IOException e) {
throw new InputParseException(TextComponent.of(e.getMessage()));
}
@ -190,7 +190,7 @@ public class ImageUtil {
File file = new File(uri.getPath());
return new FileInputStream(file);
}
return new URL(uriStr).openStream();
return MainUtil.readImageStream(uri);
} catch (IOException e) {
throw new InputParseException(TextComponent.of(e.getMessage()));
}