Comment faire fonctionner un BufferedImage avec cette image? (Java)
J'ai cette image:
Imaginez cela comme un monde de tuiles 4x4 dont les tuiles sont de 32x32 pixels chacune.
Alors jetez un oeil à l'image:
Regardez la tuile en pierre, elle a des bords qui sont en dehors de la grille. Puis-je utiliser un bufferedImage
pour cela ou dois-je faire autre chose pour que cela fonctionne?
Si oui, pourriez-vous m'aider en l'expliquant parce que je n'ai aucune idée de la façon de réaliser this is my game?
Un autre exemple image:
Permettez-moi de l'expliquer Plus clairement... 1ère image = Grille, 2ème Image = Tuile Chevauchant la grille... (c'est ce que je veux avoir parce que c'est une nouvelle tuile que je peux utiliser pour rendre mon jeu meilleur!), Image 3d = Un exemple de la façon dont il serait tuile!
2 answers
Pour éliminer complètement l'artefact limite, vous pouvez utiliser Tuiles Penrose.
Vous pouvez atténuer l'artefact de bord en utilisant anti-aliasing. Cet exemple utilise TexturePaint
avec trois variantes de nuances de chaque couleur: original, plus foncé et plus clair. Vous pouvez expérimenter avec un plus grand nombre de nuances pour de meilleurs résultats.
Utilisez simplement PhotoShop
pour modifier l'image à une taille de 32x32 pixels....ensuite l'utiliser dans votre jeu....
/////////////ÉDITÉ//////////////////
Comme indiqué ici, AffineTransformOp
offre la flexibilité supplémentaire de choisir le type d'interpolation.
BufferedImage before = getBufferedImage(encoded);
int w = before.getWidth();
int h = before.getHeight();
BufferedImage after = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
AffineTransform at = new AffineTransform();
at.scale(2.0, 2.0);
AffineTransformOp scaleOp =
new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
after = scaleOp.filter(before, after);