Example usage for java.awt Image SCALE_SMOOTH

List of usage examples for java.awt Image SCALE_SMOOTH

Introduction

In this page you can find the example usage for java.awt Image SCALE_SMOOTH.

Prototype

int SCALE_SMOOTH

To view the source code for java.awt Image SCALE_SMOOTH.

Click Source Link

Document

Choose an image-scaling algorithm that gives higher priority to image smoothness than scaling speed.

Usage

From source file:z.tool.util.image.ImageUtil.java

/**
 * /*ww w .jav  a  2s.c  o m*/
 */
public static void resize(InputStream inputStream, ImageType destType, OutputStream outputStream,
        int maxNewWidth, int maxNewHeight) {
    if (null == inputStream) {
        throw new IllegalArgumentException("inputStream is null");
    }

    if (null == destType) {
        throw new IllegalArgumentException("destType is null");
    }

    if (null == outputStream) {
        throw new IllegalArgumentException("outputStream is null");
    }

    try {
        Image srcImage = ImageIO.read(inputStream);

        // ?
        int srcImageWidth = srcImage.getWidth(null);
        int srcImageHeight = srcImage.getHeight(null);

        if (0 == maxNewWidth || 0 == maxNewHeight
                || (srcImageWidth <= maxNewWidth && srcImageHeight <= maxNewHeight)) {
            maxNewWidth = srcImageWidth;
            maxNewHeight = srcImageHeight;
        } else {
            // 
            // ?
            if (srcImageWidth >= srcImageHeight) {
                // ???
                maxNewHeight = (int) Math.round((srcImageHeight * maxNewWidth * 1.0 / srcImageWidth));
            } else {
                // ???
                maxNewWidth = (int) Math.round((srcImageWidth * maxNewHeight * 1.0 / srcImageHeight));
            }
        }

        BufferedImage distImage = new BufferedImage(maxNewWidth, maxNewHeight, BufferedImage.TYPE_INT_ARGB_PRE);

        Graphics2D graphics2d = distImage.createGraphics();
        graphics2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

        // 
        graphics2d.drawImage(srcImage.getScaledInstance(maxNewWidth, maxNewHeight, Image.SCALE_SMOOTH), 0, 0,
                null);

        // ?
        ImageIO.write(distImage, destType.name(), outputStream);
    } catch (IOException e) {
        LOG.error("method:resize,destType:" + destType + ",maxNewHeight:" + maxNewHeight + ",maxNewWidth:"
                + maxNewWidth + ",errorMsg:" + e.getMessage(), e);
        throw new HumanNeededError(Error.IO_ERROR);
    }
}

From source file:View.EmbedMessage.java

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
    // TODO add your handling code here:
    JFileChooser chooser = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");

    chooser.setFileFilter(filter);/* www.  j a v  a2s .co m*/
    int returnVal = chooser.showOpenDialog(this);
    if (returnVal == JFileChooser.APPROVE_OPTION) {
        String path = chooser.getSelectedFile().getPath();

        try {
            String masterKeyBackUpName = System.currentTimeMillis() + "."
                    + FilenameUtils.getExtension(chooser.getSelectedFile().getPath());
            String masterKeyBackUpLocation = Configuration.masterPoolLocation + masterKeyBackUpName;
            masterFileName = masterKeyBackUpName;
            FileUtils.copyFile(chooser.getSelectedFile(), new File(masterKeyBackUpLocation));

            image_name.setText(chooser.getSelectedFile().getName());
            System.out.println("You chose to open this file: " + path);
            BufferedImage img = null;
            try {
                img = ImageIO.read(new File(path));
                Image scaledInstance = img.getScaledInstance(image_Label.getWidth(), image_Label.getHeight(),
                        Image.SCALE_SMOOTH);
                ImageIcon imageIcon = new ImageIcon(scaledInstance);
                image_Label.setIcon(imageIcon);
            } catch (IOException e) {
                e.printStackTrace();
            }
            long size = (chooser.getSelectedFile().length()) / 1024;

            Dbcon dbcon = new Dbcon();
            int ins = dbcon
                    .insert("insert into tbl_encryption_log(user_id,master_file,master_file_size)values('"
                            + Login.logged_in_user_id + "','" + masterKeyBackUpName + "','" + size + "')");
            if (ins > 0) {
                ResultSet rs = dbcon.select("select max(process_id)  from tbl_encryption_log");
                try {
                    if (rs.next()) {
                        System.out.println(rs.getString(1));
                        EmbedMessage.process_id = Integer.parseInt(rs.getString(1));
                        System.out.println(EmbedMessage.process_id);
                        analyze_button.setEnabled(true);
                    }
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }

            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

From source file:edu.ku.brc.af.prefs.PrefsToolbar.java

/**
 * Loads a Section or grouping of Prefs.
 * @param sectionElement the section elemnent
 * @param altName the localized title// w w w .j  a  v a 2 s.co m
 */
protected void loadSectionPrefs(final Element sectionElement, final ResourceBundle resBundle) {
    RolloverCommand.setVertGap(2);

    //List<NavBoxButton> btns = new Vector<NavBoxButton>();
    //int totalWidth = 0;
    try {
        List<?> prefs = sectionElement.selectNodes("pref"); //$NON-NLS-1$
        //numPrefs = prefs.size();
        for (Iterator<?> iterPrefs = prefs.iterator(); iterPrefs.hasNext();) {
            org.dom4j.Element pref = (org.dom4j.Element) iterPrefs.next();

            String prefName = pref.attributeValue("name"); //$NON-NLS-1$
            String prefTitle = pref.attributeValue("title"); //$NON-NLS-1$
            String iconPath = pref.attributeValue("icon"); //$NON-NLS-1$
            String panelClass = pref.attributeValue("panelClass"); //$NON-NLS-1$
            String viewSetName = pref.attributeValue("viewsetname"); //$NON-NLS-1$
            String viewName = pref.attributeValue("viewname"); //$NON-NLS-1$
            String hContext = pref.attributeValue("help"); //$NON-NLS-1$

            if (AppContextMgr.isSecurityOn()) {
                PermissionSettings perm = SecurityMgr.getInstance().getPermission("Prefs." + prefName);
                //PermissionSettings.dumpPermissions("Prefs: "+prefName, perm.getOptions());
                if (!perm.canView()) // this means Enabled
                {
                    continue;
                }
            }

            if (StringUtils.isNotEmpty(prefTitle) && StringUtils.isNotEmpty(iconPath)
                    && StringUtils.isNotEmpty(panelClass)) {
                if (resBundle != null) {
                    try {
                        prefTitle = resBundle.getString(prefTitle);

                    } catch (MissingResourceException ex) {
                        log.error("Couldn't find key[" + prefTitle + "]");
                        edu.ku.brc.af.core.UsageTracker.incrHandledUsageCount();
                        edu.ku.brc.exceptions.ExceptionTracker.getInstance().capture(PrefsToolbar.class, ex);
                    }
                }

                ImageIcon icon;
                if (iconPath.startsWith("http") || iconPath.startsWith("file")) //$NON-NLS-1$ //$NON-NLS-2$
                {
                    icon = new ImageIcon(new URL(iconPath));
                } else {
                    icon = IconManager.getImage(iconPath);
                }

                if (icon != null) {
                    if (icon.getIconWidth() > iconSize || icon.getIconHeight() > iconSize) {
                        icon = new ImageIcon(
                                icon.getImage().getScaledInstance(iconSize, iconSize, Image.SCALE_SMOOTH));
                    }
                }
                if (icon == null) {
                    log.error("Icon was created - path[" + iconPath + "]"); //$NON-NLS-1$ //$NON-NLS-2$
                }

                NavBoxButton btn = new NavBoxButton(getResourceString(prefTitle), icon);
                btn.setOpaque(false);
                btn.setVerticalLayout(true);
                btn.setBorder(BorderFactory.createEmptyBorder(4, 4, 2, 4));

                try {
                    Class<?> panelClassObj = Class.forName(panelClass);
                    Component comp = (Component) panelClassObj.newInstance();

                    if (comp instanceof PrefsPanelIFace) {
                        PrefsPanelIFace prefPanel = (PrefsPanelIFace) comp;
                        prefPanel.setName(prefName);
                        prefPanel.setTitle(prefTitle);
                        prefPanel.setHelpContext(hContext);

                        if (!prefPanel.isOKToLoad()
                                || (AppContextMgr.isSecurityOn() && !prefPanel.getPermissions().canView())) {
                            continue;
                        }
                        prefPanel.setPrefsPanelMgr(prefsPanelMgr);
                    }

                    if (panelClassObj == GenericPrefsPanel.class) {
                        if (StringUtils.isNotEmpty(viewSetName) && StringUtils.isNotEmpty(viewName)) {
                            GenericPrefsPanel genericPrefsPanel = (GenericPrefsPanel) comp;
                            genericPrefsPanel.createForm(viewSetName, viewName);

                        } else {
                            log.error(
                                    "ViewSetName[" + viewSetName + "] or ViewName[" + viewName + "] is empty!"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
                        }
                    }

                    prefsPanelMgr.addPanel(prefTitle, comp);

                    add(btn.getUIComponent());

                } catch (Exception ex) {
                    edu.ku.brc.af.core.UsageTracker.incrHandledUsageCount();
                    edu.ku.brc.exceptions.ExceptionTracker.getInstance().capture(PrefsToolbar.class, ex);
                    log.error(ex); // XXX FIXME
                    ex.printStackTrace();
                }
                btn.addActionListener(new ShowAction(prefTitle, btn));
            }
        }

        if (getComponentCount() > 0) {
            prevBtn = (RolloverCommand) getComponent(0);
            prevBtn.setActive(true);
        }

        /*int aveWidth = totalWidth / btns.size();
        for (NavBoxButton nbb : btns)
        {
        Dimension size = nbb.getPreferredSize();
        if (size.width < aveWidth)
        {
            size.width = aveWidth;
        }
        nbb.setPreferredSize(size);
        nbb.setSize(size);
        } */

    } catch (Exception ex) {
        ex.printStackTrace();
        edu.ku.brc.af.core.UsageTracker.incrHandledUsageCount();
        edu.ku.brc.exceptions.ExceptionTracker.getInstance().capture(PrefsToolbar.class, ex);

        throw new RuntimeException(ex);
    } finally {
        RolloverCommand.setVertGap(0);
    }
}

From source file:View.EmbedFile.java

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
    // TODO add your handling code here:
    JFileChooser chooser = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");

    chooser.setFileFilter(filter);//from w  w  w  .j  a  v  a 2 s  . c o  m
    int returnVal = chooser.showOpenDialog(this);
    if (returnVal == JFileChooser.APPROVE_OPTION) {
        String path = chooser.getSelectedFile().getPath();
        jLabel2.setText(chooser.getSelectedFile().getName());
        String masterKeyBackUpName = System.currentTimeMillis() + "."
                + FilenameUtils.getExtension(chooser.getSelectedFile().getPath());
        String masterKeyBackUpLocation = Configuration.masterPoolLocation + masterKeyBackUpName;
        masterFileName = masterKeyBackUpName;
        try {
            FileUtils.copyFile(chooser.getSelectedFile(), new File(masterKeyBackUpLocation));
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("You chose to open this file: " + path);
        BufferedImage img = null;
        try {
            img = ImageIO.read(new File(path));
            Image scaledInstance = img.getScaledInstance(jLabel2.getWidth(), jLabel2.getHeight(),
                    Image.SCALE_SMOOTH);
            ImageIcon imageIcon = new ImageIcon(scaledInstance);
            jLabel2.setIcon(imageIcon);
            analyze_master_file_button.setEnabled(true);
        } catch (IOException e) {
            e.printStackTrace();
        }
        long size = (chooser.getSelectedFile().length()) / 1024;

        Dbcon dbcon = new Dbcon();
        int ins = dbcon.insert(
                "insert into tbl_encryption_log(user_id,master_file,master_file_size,encryption_type)values('"
                        + Login.logged_in_user_id + "','" + path + "','" + size + "',1)");
        if (ins > 0) {
            ResultSet rs = dbcon.select("select max(process_id)  from tbl_encryption_log");
            try {
                if (rs.next()) {
                    System.out.println(rs.getString(1));
                    EmbedFile.process_id = Integer.parseInt(rs.getString(1));
                    System.out.println(EmbedFile.process_id);

                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }

}

From source file:view.CreateOrganization.java

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
    // TODO add your handling code here:
    JFileChooser chooser = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");

    chooser.setFileFilter(filter);/* w ww  .  j a v  a2  s .c o m*/
    int returnVal = chooser.showOpenDialog(this);
    if (returnVal == JFileChooser.APPROVE_OPTION) {
        path = chooser.getSelectedFile().getPath();
        System.out.println("You chose to open this file: " + chooser.getSelectedFile().getName());
        BufferedImage img = null;
        try {
            img = ImageIO.read(new File(path));
            Image scaledInstance = img.getScaledInstance(jLabel7.getWidth(), jLabel7.getHeight(),
                    Image.SCALE_SMOOTH);
            ImageIcon imageIcon = new ImageIcon(scaledInstance);
            jLabel7.setIcon(imageIcon);

            organisationIconName = System.currentTimeMillis() + "." + FilenameUtils.getExtension(path);
            FileUtils.copyFile(chooser.getSelectedFile(),
                    new File(Configuration.organisationImages + organisationIconName));

        } catch (IOException e) {
            e.printStackTrace();
        }
        size = (chooser.getSelectedFile().length()) / 1024;
        System.out.println("path " + path + " size " + size);
    }

}

From source file:com.floreantpos.ui.model.MenuItemForm.java

protected void doSelectImageFile() {
    JFileChooser fileChooser = new JFileChooser();
    fileChooser.setMultiSelectionEnabled(false);
    fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

    int option = fileChooser.showOpenDialog(POSUtil.getBackOfficeWindow());

    if (option == JFileChooser.APPROVE_OPTION) {
        File imageFile = fileChooser.getSelectedFile();
        try {/*from w w w .  jav  a  2s.  c o  m*/
            byte[] itemImage = FileUtils.readFileToByteArray(imageFile);
            int imageSize = itemImage.length / 1024;

            if (imageSize > 20) {
                POSMessageDialog.showMessage(Messages.getString("MenuItemForm.0")); //$NON-NLS-1$
                itemImage = null;
                return;
            }

            ImageIcon imageIcon = new ImageIcon(
                    new ImageIcon(itemImage).getImage().getScaledInstance(80, 80, Image.SCALE_SMOOTH));
            lblImagePreview.setIcon(imageIcon);

            MenuItem menuItem = (MenuItem) getBean();
            menuItem.setImageData(itemImage);

        } catch (IOException e) {
            PosLog.error(getClass(), e);
        }
    }
}

From source file:com.floreantpos.model.MenuItem.java

public ImageIcon getScaledImage(int width, int height) {
    ImageIcon icon = new ImageIcon(getImageData());
    Image scaledInstance = icon.getImage().getScaledInstance(width, height, Image.SCALE_SMOOTH);
    return new ImageIcon(scaledInstance);
}

From source file:lol.search.RankedStatsPage.java

private JPanel headerPanel() {
    //init spacers for header
    for (int i = 0; i < 10; i++) {
        JLabel label = new JLabel("--");
        label.setForeground(new Color(0, 0, 0, 0));
        spacers.add(label);/*  w  w  w  . jav  a2  s  .co  m*/
    }
    //header -- to set this semi-transparent i had to remove setOpaque and replace with setBackground(...)
    JPanel headerPanel = new JPanel();
    headerPanel.setLayout(new BorderLayout());
    //headerPanel.setBorder(BorderFactory.createLineBorder(Color.WHITE));
    headerPanel.setBackground(backgroundColor);
    headerPanel.setPreferredSize(headerDimension);
    //back button
    JPanel buttonHolder = new JPanel();
    ImageIcon buttonImage = new ImageIcon("assets\\other\\button.png");
    ImageIcon buttonPressedImage = new ImageIcon("assets\\other\\buttonPressed.png");
    Image tempImage = buttonImage.getImage();
    Image newTempImg = tempImage.getScaledInstance(75, 35, Image.SCALE_SMOOTH);
    buttonImage = new ImageIcon(newTempImg);
    JButton backButton = new JButton("BACK");
    backButton.setFont(new Font("Sen-Regular", Font.CENTER_BASELINE, 10)); //custom font
    backButton.setForeground(Color.WHITE); //text color
    backButton.setBackground(new Color(0, 0, 0, 0));
    backButton.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    backButton.setHorizontalTextPosition(AbstractButton.CENTER);
    backButton.setPreferredSize(new Dimension(75, 35));
    //pressed button
    Image tempImage2 = buttonPressedImage.getImage();
    Image newTempImg2 = tempImage2.getScaledInstance(75, 35, Image.SCALE_SMOOTH);
    buttonPressedImage = new ImageIcon(newTempImg2);
    backButton.setIcon(buttonImage);
    backButton.setRolloverIcon(buttonPressedImage);
    backButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) { //button pressed
            System.out.println("Going back...\n");
            masterFrame.getContentPane().removeAll();
            masterFrame.revalidate();
            masterFrame.repaint();
            MainPage MAIN_PAGE = new MainPage(masterFrame, summonerName);
        }
    });
    buttonHolder.add(backButton);
    buttonHolder.setOpaque(false);
    headerPanel.add(buttonHolder, BorderLayout.LINE_START);
    //centerpanel
    JPanel centerPanel = new JPanel();
    centerPanel.setLayout(new GridLayout(1, 2));
    centerPanel.setOpaque(false);
    //centerPanel.setBorder(BorderFactory.createLineBorder(Color.WHITE));
    //rightcenter
    JPanel rightCenter = new JPanel();
    rightCenter.setOpaque(false);
    rightCenter.setLayout(new GridLayout(2, 1));
    //top center panel
    JPanel topCenter = new JPanel();
    topCenter.setOpaque(false);
    topCenter.setLayout(new BoxLayout(topCenter, BoxLayout.X_AXIS));
    //profile icon
    JPanel proIconPanel = new JPanel();
    proIconPanel.setOpaque(false);
    proIconPanel.setLayout(new BoxLayout(proIconPanel, BoxLayout.Y_AXIS));
    JLabel profileIconLabel = new JLabel(this.profileIcon);
    //profileIconLabel.setBorder(BorderFactory.createLineBorder(Color.WHITE));
    profileIconLabel.setAlignmentX(Component.RIGHT_ALIGNMENT);
    proIconPanel.add(profileIconLabel);
    centerPanel.add(proIconPanel);
    //empty spacer
    topCenter.add(spacers.get(0));
    //summoner name
    JLabel summonerNameLabel = new JLabel(this.summonerName);
    summonerNameLabel.setFont(new Font("Sen-Regular", Font.CENTER_BASELINE, 15)); //custom font
    summonerNameLabel.setForeground(Color.WHITE); //text color
    summonerNameLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
    topCenter.add(summonerNameLabel);
    //empty spacer
    topCenter.add(spacers.get(1));
    //tier
    JLabel tierLabel = new JLabel(this.tier);
    tierLabel.setFont(new Font("Sen-Regular", Font.CENTER_BASELINE, 13)); //custom font
    tierLabel.setForeground(new Color(219, 219, 219)); //text color
    tierLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
    topCenter.add(tierLabel);
    //empty spacer
    topCenter.add(spacers.get(2));
    //division
    JLabel divisionLabel = new JLabel(this.division);
    divisionLabel.setFont(new Font("Sen-Regular", Font.CENTER_BASELINE, 13)); //custom font
    divisionLabel.setForeground(new Color(219, 219, 219)); //text color
    divisionLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
    topCenter.add(divisionLabel);
    //bottom center panel
    JPanel bottomCenter = new JPanel();
    bottomCenter.setOpaque(false);
    bottomCenter.setLayout(new BoxLayout(bottomCenter, BoxLayout.X_AXIS));
    //empty spacer
    bottomCenter.add(spacers.get(3));
    //season
    JLabel winsLabel = new JLabel(this.season);
    winsLabel.setFont(new Font("Sen-Regular", Font.CENTER_BASELINE, 14)); //custom font
    winsLabel.setForeground(new Color(219, 219, 219)); //text color
    winsLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
    bottomCenter.add(winsLabel);

    rightCenter.add(topCenter);
    rightCenter.add(bottomCenter);
    centerPanel.add(rightCenter);
    headerPanel.add(centerPanel, BorderLayout.CENTER);
    //empty panel to balance right side
    JPanel ee = new JPanel();
    ee.setOpaque(false);
    ee.setPreferredSize(new Dimension(260, 50));
    headerPanel.add(ee, BorderLayout.LINE_END);
    return headerPanel;
}

From source file:com.actionbazaar.controller.SellController.java

/**
 * Saves the uploaded file into a folder for the user.
 * @param imageFile - image file to be saved
 * @return image id/* w w  w.j  a v  a2 s.c  o  m*/
 */
private String save(UploadedFile imageFile) {
    try {
        File saveFld = new File(imageFolder + File.separator + userDisplay.getUser().getUsername());
        if (!saveFld.exists()) {
            if (!saveFld.mkdir()) {
                logger.log(Level.INFO, "Unable to create folder: {0}", saveFld.getAbsolutePath());
                return null;
            }
        }
        File tmp = File.createTempFile("img", "img");
        IOUtils.copy(imageFile.getInputstream(), new FileOutputStream(tmp));
        File thumbnailImage = new File(saveFld + File.separator + UUID.randomUUID().toString() + ".png");
        File fullResolution = new File(saveFld + File.separator + UUID.randomUUID().toString() + ".png");

        // Create the thumbnail
        BufferedImage image = ImageIO.read(tmp);
        Image thumbnailIm = image.getScaledInstance(310, 210, Image.SCALE_SMOOTH);
        // Convert the thumbnail java.awt.Image into a rendered image which we can save
        BufferedImage thumbnailBi = new BufferedImage(thumbnailIm.getWidth(null), thumbnailIm.getHeight(null),
                BufferedImage.TYPE_INT_RGB);
        Graphics bg = thumbnailBi.getGraphics();
        bg.drawImage(thumbnailIm, 0, 0, null);
        bg.dispose();

        ImageIO.write(thumbnailBi, "png", thumbnailImage);
        // Write out the full resolution image as a thumbnail
        ImageIO.write(image, "png", fullResolution);
        if (!tmp.delete()) {
            logger.log(Level.INFO, "Unable to delete: {0}", tmp.getAbsolutePath());
        }
        String imageId = UUID.randomUUID().toString();
        imageBean.addImage(imageId, new ImageRecord(imageFile.getFileName(), fullResolution.getAbsolutePath(),
                thumbnailImage.getAbsolutePath(), userDisplay.getUser().getUsername()));
        return imageId;
    } catch (Throwable t) {
        logger.log(Level.SEVERE, "Unable to save the image.", t);
        return null;
    }
}

From source file:com.sshtools.appframework.ui.IconStore.java

private Icon get(String name, int size, String cacheKey, FileObject file)
        throws FileSystemException, IOException {
    Icon icon;/*ww  w  .ja  v  a  2  s .  c  o m*/
    if (file.getName().getBaseName().toLowerCase().endsWith(".svg")) {
        InputStream in = file.getContent().getInputStream();
        try {
            icon = new SVGIcon(name + "-" + size, in, size, size);
        } finally {
            in.close();
        }
    } else {
        DataInputStream din = new DataInputStream(file.getContent().getInputStream());
        try {
            byte[] imgData = new byte[(int) file.getContent().getSize()];
            din.readFully(imgData);
            icon = new ImageIcon(imgData);
        } finally {
            din.close();
        }
    }
    if (icon.getIconWidth() != size && icon instanceof ImageIcon) {
        Image img = ((ImageIcon) icon).getImage();
        img = img.getScaledInstance(size, size, Image.SCALE_SMOOTH);
        icon = new ImageIcon(img);
    }
    cache.put(cacheKey, icon);
    return icon;
}