Масштабируйте изображение, которое хранится как байт [] в Java

Вы могли также обернуть транзакцию в свою собственную хранимую процедуру и обработать его тот путь вместо того, чтобы делать транзакции в самом C#.

7
задан Juha Syrjälä 8 May 2010 в 10:11
поделиться

2 ответа

Зависит от формата данных.

Однако, если вы используете что-то вроде JPEG, GIF, PNG или BMP, вы можете использовать класс ImageIO .

Что-то вроде:

public byte[] scale(byte[] fileData, int width, int height) {
    ByteArrayInputStream in = new ByteArrayInputStream(fileData);
    try {
        BufferedImage img = ImageIO.read(in);
        if(height == 0) {
            height = (width * img.getHeight())/ img.getWidth(); 
        }
        if(width == 0) {
            width = (height * img.getWidth())/ img.getHeight();
        }
        Image scaledImage = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);
        BufferedImage imageBuff = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        imageBuff.getGraphics().drawImage(scaledImage, 0, 0, new Color(0,0,0), null);

        ByteArrayOutputStream buffer = new ByteArrayOutputStream();

        ImageIO.write(imageBuff, "jpg", buffer);

        return buffer.toByteArray();
    } catch (IOException e) {
        throw new ApplicationException("IOException in scale");
    }
}
21
ответ дан 6 December 2019 в 07:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: