Hallo,
ich muss in einer Anwendung .jpg Dateien herunterskalieren (auf 550x366px).
Funktioniert soweit alles, aber es gibt einen enormen Qualitätsunterschied beim Herunterskalieren. Beim Vergleich zu Imagemagic (PHP) scheint meine Umrechnung richtig schlecht wegzukommen und die resultierenden Bilder sind auch nur halb so groß.
Hat jemand eine Idee, wie man das verbessern könnte bzw was ich falsch mache?
Danke
ich muss in einer Anwendung .jpg Dateien herunterskalieren (auf 550x366px).
Funktioniert soweit alles, aber es gibt einen enormen Qualitätsunterschied beim Herunterskalieren. Beim Vergleich zu Imagemagic (PHP) scheint meine Umrechnung richtig schlecht wegzukommen und die resultierenden Bilder sind auch nur halb so groß.
Hat jemand eine Idee, wie man das verbessern könnte bzw was ich falsch mache?
Danke
Java:
/**
* Will scale down given Image
* If width or height = 0, the parameter will be set in a way, that the side proportions are kept
*
* @param image
* @param width
* @param height
* @return
*/
public static Image getScaledInstance(Image image, int width, int height) {
//create scaled BufferedImage:
double scaleFactor = 1;
double w = image.getWidth(null);
double h = image.getHeight(null);
if (width < 0) {
scaleFactor = height / h;
}
if (height < 0) {
scaleFactor = width / w;
}
if(height == 0)
{
double scaleRatio = w / width;
height = (int) (h / scaleRatio);
}
if(width == 0)
{
double scaleRatio = h / height;
width = (int) (w / scaleRatio);
}
int w1 = (int) (width * scaleFactor);
int h1 = (int) (height * scaleFactor);
BufferedImage scaledImage = new BufferedImage(w1, h1, BufferedImage.TYPE_INT_RGB);
//draw image on it:
Graphics2D g2 = scaledImage.createGraphics();
g2.drawImage(image, 0, 0, w1, h1, null);
return scaledImage;
}