import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;

public class ImageResizer {

    // Конвертируем сантиметры в пиксели при разрешении 300 dpi
    private static final double CM_TO_PIXELS = 37.79527559055118;

    public static void main(String[] args) throws IOException {
        String inputFilePath = "input.jpg";  // Путь к входному файлу
        String outputFilePath = "output.jpg"; // Путь к выходному файлу

        File inputFile = new File(inputFilePath);
        BufferedImage image = ImageIO.read(inputFile);

        int width = image.getWidth();
        int height = image.getHeight();

        // Определяем большую сторону
        int maxSide = Math.max(width, height);

        // Рассчитываем коэффициент масштабирования
        double scaleFactor = 5 * CM_TO_PIXELS / maxSide;

        // Масштабируем изображение
        int scaledWidth = (int)(width * scaleFactor);
        int scaledHeight = (int)(height * scaleFactor);

        BufferedImage resizedImage = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_RGB);
        resizedImage.getGraphics().drawImage(image, 0, 0, scaledWidth, scaledHeight, null);

        // Сохраняем результат
        File outputFile = new File(outputFilePath);
        ImageIO.write(resizedImage, "jpg", outputFile);

        System.out.println("Изображение успешно сохранено.");
    }
}