Afbeelding verkleinen in Java

Ik heb een PNG-afbeelding en wil het formaat ervan wijzigen. Hoe kan ik dat doen? Hoewel ik ditheb doorgenomen Ik begrijp het fragment niet.


Antwoord 1, autoriteit 100%

Als je een java.awt.Imagehebt, heb je voor het wijzigen van de grootte geen elkeextra bibliotheken nodig. Gewoon doen:

Image newImage = yourImage.getScaledInstance(newWidth, newHeight, Image.SCALE_DEFAULT);

Uiteraard vervangnewWidthen newHeightdoor de afmetingen van de opgegeven afbeelding.
Let op de laatste parameter: deze vertelt de runtime het algoritmedat u wilt gebruiken voor het wijzigen van de grootte.

Er zijn algoritmen die een zeer nauwkeurig resultaat opleveren, maar deze nemen veel tijd in beslag.
U kunt elk van de volgende algoritmen gebruiken:

  • Image.SCALE_DEFAULT: gebruik het standaard algoritme voor het schalen van afbeeldingen.
  • Image.SCALE_FAST: kies een algoritme voor het schalen van afbeeldingen waarbij de schaalsnelheid een hogere prioriteit heeft dan de vloeiendheid van de geschaalde afbeelding.
  • Image.SCALE_SMOOTH: kies een algoritme voor het schalen van afbeeldingen dat een hogere prioriteit geeft aan de vloeiendheid van afbeeldingen dan de schaalsnelheid.
  • Image.SCALE_AREA_AVERAGING: gebruik het gebied van het gemiddelde van het beeldschalende algoritme.
  • Image.SCALE_REPLICATE: gebruik het beeldschalen algoritme belichaamd in de ReplicateScaleFilterklasse.

Zie de Javadoc voor meer informatie.


Antwoord 2, Autoriteit 26%

We doen dit om miniaturen van afbeeldingen te maken:

 BufferedImage tThumbImage = new BufferedImage( tThumbWidth, tThumbHeight, BufferedImage.TYPE_INT_RGB );
  Graphics2D tGraphics2D = tThumbImage.createGraphics(); //create a graphics object to paint to
  tGraphics2D.setBackground( Color.WHITE );
  tGraphics2D.setPaint( Color.WHITE );
  tGraphics2D.fillRect( 0, 0, tThumbWidth, tThumbHeight );
  tGraphics2D.setRenderingHint( RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR );
  tGraphics2D.drawImage( tOriginalImage, 0, 0, tThumbWidth, tThumbHeight, null ); //draw the image scaled
  ImageIO.write( tThumbImage, "JPG", tThumbnailTarget ); //write the image to a file

Antwoord 3, Autoriteit 11%

Probeer dit:

ImageIcon icon = new ImageIcon(UrlToPngFile);
Image scaleImage = icon.getImage().getScaledInstance(28, 28,Image.SCALE_DEFAULT);

Antwoord 4, Autoriteit 5%

Verkeer zich op afbeelding met hoge kwaliteit:

private static InputStream resizeImage(InputStream uploadedInputStream, String fileName, int width, int height) {
        try {
            BufferedImage image = ImageIO.read(uploadedInputStream);
            Image originalImage= image.getScaledInstance(width, height, Image.SCALE_DEFAULT);
            int type = ((image.getType() == 0) ? BufferedImage.TYPE_INT_ARGB : image.getType());
            BufferedImage resizedImage = new BufferedImage(width, height, type);
            Graphics2D g2d = resizedImage.createGraphics();
            g2d.drawImage(originalImage, 0, 0, width, height, null);
            g2d.dispose();
            g2d.setComposite(AlphaComposite.Src);
            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);
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            ImageIO.write(resizedImage, fileName.split("\\.")[1], byteArrayOutputStream);
            return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
        } catch (IOException e) {
            // Something is going wrong while resizing image
            return uploadedInputStream;
        }
    }

Antwoord 5

           int newHeight = 150;
            int newWidth = 150; 
            holder.iv_arrow.requestLayout();
            holder.iv_arrow.getLayoutParams().height = newHeight;
            holder.iv_arrow.getLayoutParams().width = newWidth;
            holder.iv_arrow.setScaleType(ImageView.ScaleType.FIT_XY);
            holder.iv_arrow.setImageResource(R.drawable.video_menu);

Antwoord 6

Eenvoudige manier in Java

public void resize(String inputImagePath,
            String outputImagePath, int scaledWidth, int scaledHeight)
            throws IOException {
        // reads input image
        File inputFile = new File(inputImagePath);
        BufferedImage inputImage = ImageIO.read(inputFile);
        // creates output image
        BufferedImage outputImage = new BufferedImage(scaledWidth,
                scaledHeight, inputImage.getType());
        // scales the input image to the output image
        Graphics2D g2d = outputImage.createGraphics();
        g2d.drawImage(inputImage, 0, 0, scaledWidth, scaledHeight, null);
        g2d.dispose();
        // extracts extension of output file
        String formatName = outputImagePath.substring(outputImagePath
                .lastIndexOf(".") + 1);
        // writes to output file
        ImageIO.write(outputImage, formatName, new File(outputImagePath));
    }

Other episodes