Как сделать изображение четким и четким даже при увеличении и уменьшении масштаба?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать изображение четким и четким даже при увеличении и уменьшении масштаба?

Сообщение Anonymous »

введите здесь описание изображения — исходное положение изображения
введите здесь описание изображения — увеличьте изображение
Как сделать текст и слова читабельными , четкое, качественное изображение?
Исходный код:

Код: Выделить всё

   private Pane createPagePane(int pageIndex, PDDocument document, PDFRenderer renderer, AnchorPane anchorPane) throws IOException {
PDPage page = document.getPage(pageIndex);
PDRectangle pageSize = page.getMediaBox();
boolean isLandscape = pageSize.getWidth() > pageSize.getHeight();

double widthToFit = anchorPane.getPrefWidth();
double heightToFit = anchorPane.getPrefHeight();

double scaleFactor = isLandscape ? Math.min(widthToFit / pageSize.getWidth(), heightToFit / pageSize.getHeight())
: Math.min(heightToFit / pageSize.getWidth(), widthToFit / pageSize.getHeight());

int targetWidth = (int) (pageSize.getWidth() * scaleFactor);
int targetHeight = (int) (pageSize.getHeight() * scaleFactor);

BufferedImage bufferedImage = renderer.renderImage(pageIndex, (float) scaleFactor, ImageType.RGB);

BufferedImage backgroundImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = backgroundImage.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d.setColor(java.awt.Color.WHITE);
g2d.fillRect(0, 0, targetWidth, targetHeight);
g2d.drawImage(bufferedImage, 0, 0, targetWidth, targetHeight, null);
g2d.dispose();

Image fxImage = SwingFXUtils.toFXImage(backgroundImage, null);
ImageView imageView = new ImageView(fxImage);

imageView.setFitWidth(targetWidth);
imageView.setFitHeight(targetHeight);
imageView.setPreserveRatio(true);
imageView.setSmooth(true);
imageView.setCache(true);

Pane pagePane = new Pane(imageView);
pagePane.setPrefSize(targetWidth, targetHeight);

pagePane.setOnMouseClicked(event -> {
pagePane.getStyleClass().add("selected-pane");
});

rectMouseInteraction(pagePane, document, pageIndex, scaleFactor);

return pagePane;
}
Я ожидаю следующего результата:

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

Подробнее здесь: https://stackoverflow.com/questions/786 ... d-zoom-out
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»