Обрезка изображения с 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"));

Затем пишется правильное изображение (так оно и работает).

0 ответов

Другие вопросы по тегам