Projet gus05 de développement Java
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-39%
Le deal à ne pas rater :
Pack Home Cinéma Magnat Monitor : Ampli DENON AVR-X2800H, Enceinte ...
1190 € 1950 €
Voir le deal

Sauvegarder en gif les icônes de fichier

Aller en bas

Sauvegarder en gif les icônes de fichier Empty Sauvegarder en gif les icônes de fichier

Message  Gus Jeu 30 Juin - 15:42

Comment récupérer les icônes de fichiers et les enregistrer au format gif ?

Je vous propose ici une petite entité qui prend en paramètre un objet File et se contente de créer juste à coté un fichier gif du même nom pour y enregistrer son icône.

Ceci se fait en deux étapes :

1/ obtenir l'icône :
Code:
File file = (File)obj;
if(file==null || !file.exists()) return;
Icon icon = FileSystemView.getFileSystemView().getSystemIcon(file);
2/ sauvegarder l'icône dans le fichier gif
Code:
File gifFile = new File(file.getAbsolutePath()+".gif");
BufferedImage image = iconToImage(icon);
ImageIO.write(image,"gif",gifFile);

La méthode iconToImage permettant de transformer notre icône en image (en conservant la transparence) comme nous avons pu le voir dans un précédent topic.

Voici le code source complet de l'entité gus.file.handle.extractfileicon

Code:
package gus05.entity.gus.file.handle.extractfileicon;

import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.Icon;
import javax.swing.filechooser.FileSystemView;
import gus05.framework.core.Entity;
import gus05.framework.features.Give;


public class ExtractFileIcon implements Entity, Give {


    public String getName()            {return "gus.file.handle.extractfileicon";}
    public String getCreationDate()      {return "2011.06.30";}


    public void give(Object obj) throws Exception
    {
       File file = (File)obj;
       if(file==null || !file.exists()) return;

       Icon icon = FileSystemView.getFileSystemView().getSystemIcon(file);
       File gifFile = new File(file.getAbsolutePath()+".gif");
       BufferedImage image = iconToImage(icon);

       ImageIO.write(image,"gif",gifFile);
    }


    private BufferedImage iconToImage(Icon icon)
    {
       int w = icon.getIconWidth();
       int h = icon.getIconHeight();
       
        BufferedImage b = createImage(w,h);
        Graphics2D g = b.createGraphics();
      icon.paintIcon(null,g,0,0);
      g.dispose();
        return b;
    }
   
   
    private BufferedImage createImage(int w, int h)
   {
      GraphicsEnvironment ge =  GraphicsEnvironment.getLocalGraphicsEnvironment();
      GraphicsDevice gd = ge.getDefaultScreenDevice();
      GraphicsConfiguration gc = gd.getDefaultConfiguration();
      return gc.createCompatibleImage(w,h,Transparency.BITMASK);
   }
}
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

http://www.gus05.com

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum