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

Я использую 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 Ответ

3 голосов
/ 20 апреля 2011

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

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

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

RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.setLength(0);
raf.close();
...