mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-08 03:15:17 -04:00
update
This commit is contained in:
parent
c34546a9f1
commit
354c531f5c
@ -45,10 +45,7 @@ import javafx.scene.control.*;
|
|||||||
import javafx.scene.image.Image;
|
import javafx.scene.image.Image;
|
||||||
import javafx.scene.image.ImageView;
|
import javafx.scene.image.ImageView;
|
||||||
import javafx.scene.input.*;
|
import javafx.scene.input.*;
|
||||||
import javafx.scene.layout.ColumnConstraints;
|
import javafx.scene.layout.*;
|
||||||
import javafx.scene.layout.Priority;
|
|
||||||
import javafx.scene.layout.Region;
|
|
||||||
import javafx.scene.layout.StackPane;
|
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
import javafx.scene.shape.Rectangle;
|
import javafx.scene.shape.Rectangle;
|
||||||
import javafx.scene.text.Text;
|
import javafx.scene.text.Text;
|
||||||
@ -82,6 +79,7 @@ import javax.imageio.stream.ImageInputStream;
|
|||||||
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.lang.invoke.MethodHandles;
|
import java.lang.invoke.MethodHandles;
|
||||||
import java.lang.invoke.MethodType;
|
import java.lang.invoke.MethodType;
|
||||||
@ -916,14 +914,14 @@ public final class FXUtils {
|
|||||||
|
|
||||||
WebPImageReaderSpi spi = new WebPImageReaderSpi();
|
WebPImageReaderSpi spi = new WebPImageReaderSpi();
|
||||||
ImageReader reader = spi.createReaderInstance(null);
|
ImageReader reader = spi.createReaderInstance(null);
|
||||||
|
BufferedImage bufferedImage;
|
||||||
try (ImageInputStream imageInput = ImageIO.createImageInputStream(Channels.newInputStream(channel))) {
|
try (ImageInputStream imageInput = ImageIO.createImageInputStream(Channels.newInputStream(channel))) {
|
||||||
reader.setInput(imageInput, true, true);
|
reader.setInput(imageInput, true, true);
|
||||||
return SwingFXUtils.toFXImage(reader.read(0, reader.getDefaultReadParam()),
|
bufferedImage = reader.read(0, reader.getDefaultReadParam());
|
||||||
requestedWidth, requestedHeight, preserveRatio, smooth);
|
|
||||||
} finally {
|
} finally {
|
||||||
reader.dispose();
|
reader.dispose();
|
||||||
}
|
}
|
||||||
|
return SwingFXUtils.toFXImage(bufferedImage, requestedWidth, requestedHeight, preserveRatio, smooth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,11 +122,13 @@ public final class SwingFXUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static WritableImage toFXImage(BufferedImage bimg, double requestedWidth, double requestedHeight, boolean preserveRatio, boolean smooth) {
|
public static WritableImage toFXImage(BufferedImage bimg, double requestedWidth, double requestedHeight, boolean preserveRatio, boolean smooth) {
|
||||||
|
if (requestedWidth <= 0. || requestedHeight <= 0.) {
|
||||||
|
return toFXImage(bimg, null);
|
||||||
|
}
|
||||||
|
|
||||||
int width = (int) requestedWidth;
|
int width = (int) requestedWidth;
|
||||||
int height = (int) requestedHeight;
|
int height = (int) requestedHeight;
|
||||||
|
|
||||||
assert width > 0 && height > 0;
|
|
||||||
|
|
||||||
// Calculate actual dimensions if preserveRatio is true
|
// Calculate actual dimensions if preserveRatio is true
|
||||||
if (preserveRatio) {
|
if (preserveRatio) {
|
||||||
double originalWidth = bimg.getWidth();
|
double originalWidth = bimg.getWidth();
|
||||||
@ -142,17 +144,18 @@ public final class SwingFXUtils {
|
|||||||
// Create scaled BufferedImage
|
// Create scaled BufferedImage
|
||||||
BufferedImage scaledImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB_PRE);
|
BufferedImage scaledImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB_PRE);
|
||||||
Graphics2D g2d = scaledImage.createGraphics();
|
Graphics2D g2d = scaledImage.createGraphics();
|
||||||
|
try {
|
||||||
|
if (smooth) {
|
||||||
|
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
|
||||||
|
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
|
||||||
|
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
||||||
|
}
|
||||||
|
|
||||||
if (smooth) {
|
g2d.drawImage(bimg, 0, 0, width, height, null);
|
||||||
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
|
} finally {
|
||||||
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
|
g2d.dispose();
|
||||||
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g2d.drawImage(bimg, 0, 0, width, height, null);
|
|
||||||
g2d.dispose();
|
|
||||||
|
|
||||||
// Convert to JavaFX Image using the existing method
|
|
||||||
return toFXImage(scaledImage, null);
|
return toFXImage(scaledImage, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user