2017-02-26 3 views
-1

J'ai besoin d'une fonction/méthode qui peut mouler (recadrer et redimensionner) une image importée (format .png) dans un cercle de 150x150 pixels et qui devrait garder la transparence. J'ai cherché partout sur internet, j'ai aussi mon propre code mais je pense que c'est complètement inutile. J'ai besoin de cette fonction pour un code que j'utilise pour créer une interface graphique d'une base de données d'applications de médias sociaux.Existe-t-il une fonction qui convertit n'importe quelle image en un cercle de 150x150 pixels-java?

private ImageIcon logo = new ImageIcon(getClass().getResource("/test/test200x200.png")); 
toCircle(logo); 

J'ai besoin du code pour la fonction suivante:

public ImageIcon toCircle(ImageIcon icon) 
{ 
    //code 
    return icon; 
} 

Cette fonction doit convertir cette image:

à ceci:

+0

StackOverflow est pas un site de demande de code. C'est un site de questions-réponses où vous présentez les problèmes que vous rencontrez lors de la programmation, y compris toutes les recherches que vous avez effectuées et vos meilleurs efforts au niveau du code, et nous donnons une réponse à votre problème spécifique. S'il vous plaît lire [demander]. – RealSkeptic

+0

Je vote pour clore cette question hors sujet car c'est une demande de code plutôt qu'une question. – RealSkeptic

+0

je suis désolé j'ai mon code mais je pensais que cela rendrait la question confuse –

Répondre

3
  • Créer une nouvelle image transparente
  • Obtenez un objet Graphics de l'image.
  • Définissez un clip pour l'objet graphique.
  • Peignez l'image au format PNG.

Voir aussi this answer qui utilise une région écrêtée.

+0

merci. cherchait ce –

+1

Hmm ... le lien a fourni des liens à cette question Andrew: P – Frakcool

+1

@Frakcool D'Oh! Essayez le lien modifié. : P –

0

Une autre approche, qui pourrait être plus simple pour mettre en œuvre pour ce cas d'utilisation, est:

  • Créer une BufferedImage transparente la taille de l'icône
  • Créer Graphics2D de image, définir des astuces pour antialias
  • Remplir un cercle de la taille de votre cercle d'arrière-plan
  • Dessiner image e sur le dessus de votre cercle, en utilisant AlphaComposite.SrcIn

Quelque chose comme:

public Icon toCircle(ImageIcon logo) { 
    BufferedImage image = new BufferedImage(150, 150); // Assuming logo 150x150 
    Graphics2D g = image.createGraphics(); 
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
    g.fillOval(1, 1, 148, 148); // Leaving some room for antialiasing if needed 
    g.setComposite(AlphaComposite.SrcIn); 
    g.drawImage(logo.getImage(), 0, 0, null); 
    g.dispose(); 

    return new ImageIcon(image); 
} 
+0

merci pour cela est bon –