Изменение размера изображения без уменьшения килобайта изображения - с помощью imgscalr-lib-3.1

Я использую imgscalr-lib-3.1 для создания миниатюр для использования в моем классическом фотоальбоме galleria. это уменьшает размер (пиксели, которые я имею в виду как 100*100), но не килобайты (как 10K, 20K). вот мой код:

    public static void createThumbNails(String path) throws ImageFormatException, IOException{

    File image ;
    FileInputStream in = null ;
    JPEGImageDecoder decoder;
    BufferedImage bufferedImage ;
    BufferedImage outBufferedImage ;
    Scalr scalr = new Scalr();
    File folder = new File(path+"/images/album/award/");
    File[] files = folder.listFiles();  
    File outputfile ;



    for(File file : files){
        image = file;
        in = new FileInputStream(file);
        decoder = JPEGCodec.createJPEGDecoder(in);
        bufferedImage = decoder.decodeAsBufferedImage();
        outBufferedImage = scalr.resize(bufferedImage, Scalr.Method.SPEED,100);


        ImageIO.write(outBufferedImage, "jpg", file);
    }

    in.close();

}

ребята, вы знаете, что делать? благодарю вас.

1 ответ

Решение

Вы пишете миниатюры в те же файлы, из которых читаете исходные изображения. Это может быть не то, что вы хотите.

Если вы хотите этого, однако вам нужно будет либо удалить, либо усечь входной файл после чтения из него, чтобы убедиться, что вы просто не перезаписываете первые несколько байтов миниатюрой, оставляя оставшуюся часть для хранения старых данных изображения.,

Один простой способ обрезать файл - это использовать RandomAccessFile:

RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.setLength(0);
raf.close();
Другие вопросы по тегам