Utilisateur:Ellysor/TilesToPlanFiles
Aller à la navigation
Aller à la recherche
Programme (java) qui récupére les tiles d'une zone depuis l'API et les assemble pour créer la carte Plan-xxx.jpg qui est utilisée par le wiki. Il n'est pas complètement automatisé, il ne récupère pas les coordonnées de la map à partie de /map_floor mais il les lit dans un tableau pour le moment.
import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.net.URL;
import javax.imageio.ImageIO;
public class AssembleTiles
{
public static void main(String[] args) { // https://api.guildwars2.com/v1/map_floor.json?continent_id=1&lang=fr&floor=1 //int[] tileData = { 2, 7, 2, 9, 63, 73 }; String filename = "Plan-Bassin aurique (niveau supérieur).jpg"; int[] tileData = { 1, 7, 2, 9, 63, 73 }; String filename = "Plan:Bassin aurique (surface).jpg"; int floor = tileData[0]; // floor 1 = surface, 2 = niveau superieur int zoom = tileData[1]; // max zoom level (for best level of details) int tileMinX = tileData[2]; int tileMaxX = tileData[3]; int tileMinY = tileData[4]; int tileMaxY = tileData[5]; BufferedImage resultImage = new BufferedImage((tileMaxX-tileMinX+1)*256, (tileMaxY-tileMinY+1)*256, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = resultImage.createGraphics(); try { for (int i = tileMinX; i<= tileMaxX; i++) { for (int j = tileMinY; j<= tileMaxY; j++) { String urlString = "https://tiles.guildwars2.com/1/"+floor+"/"+zoom+"/"+i+"/"+j+".jpg"; System.out.println("Loading " + urlString); BufferedImage tileImage = ImageIO.read(new URL(urlString)); g2.drawImage(tileImage,(i-tileMinX)*256,(j-tileMinY)*256,256,256,null); } } File outputfile = new File("C:\\Users\\User\\Documents\\Guild Wars 2\\"+filename); ImageIO.write(resultImage, "jpg", outputfile); System.out.println("Done, file " + filename + " created");
} catch (IOException e) { e.printStackTrace(); } }
}