Обрезка изображения с URL на InputStream
Мне нужно обрезать изображение из Интернета (через его URL) и вернуть InputStream (который может быть загружен в AWS S3). Я использую org.imgscalr в качестве библиотеки и имею следующий метод:
public InputStream cropFile(String url) throws Exception, IOException {
BufferedImage original = ImageIO.read(new URL(url));
BufferedImage target = null;
// resize based on http://www.htmlgoodies.com/beyond/java/create-high-quality-thumbnails-using-the-imgscalr-library.html
target = Scalr.crop(original, 410, 60, 200, 300, Scalr.OP_ANTIALIAS);
InputStream is = (InputStream) ImageIO.createImageInputStream(target);
Assert.assertNotNull(is);// it always returns null!!!
return is;
}
Я называю метод с чем-то вроде:
InputStream is = cropFile("http://fengyuanchen.github.io/cropperjs/img/picture.jpg");
а затем попробуйте загрузить его на AWS S3:
PutObjectRequest request = new PutObjectRequest(AWSConfig.getBucket(), key, is, meta);
s3.putObject(request);
К сожалению, я продолжаю получать нулевой поток ввода (в точке подтверждения выше). Если я изменю createImage на:
ImageIO.write(target, "jpg", new File("c:\\dest.jpg"));
Затем пишется правильное изображение (так оно и работает).