56 lines
2.0 KiB
Java
56 lines
2.0 KiB
Java
import javax.imageio.ImageIO;
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
|
|
public class AsciiArtGenerator {
|
|
|
|
// Caracteres ordenados de menor a mayor intensidad
|
|
private static final String ASCII_CHARS = "@%#*+=-:. ";
|
|
|
|
public static void main(String[] args) {
|
|
if (args.length < 1) {
|
|
System.out.println("Uso: java AsciiArtGenerator <ruta de la imagen>");
|
|
return;
|
|
}
|
|
|
|
String imagePath = args[0];
|
|
try {
|
|
BufferedImage image = ImageIO.read(new File(imagePath));
|
|
String asciiArt = convertToAscii(image);
|
|
System.out.println(asciiArt);
|
|
} catch (IOException e) {
|
|
System.err.println("Error al cargar la imagen: " + e.getMessage());
|
|
}
|
|
}
|
|
|
|
private static String convertToAscii(BufferedImage image) {
|
|
StringBuilder sb = new StringBuilder();
|
|
int width = image.getWidth();
|
|
int height = image.getHeight();
|
|
|
|
// Redimensionar la imagen para que quepa en la consola
|
|
int newWidth = 100;
|
|
int newHeight = (int) (height * ((double) newWidth / width) / 2); // Dividir por 2 para ajustar la proporción
|
|
|
|
BufferedImage resizedImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
|
|
resizedImage.getGraphics().drawImage(image, 0, 0, newWidth, newHeight, null);
|
|
|
|
for (int y = 0; y < newHeight; y++) {
|
|
for (int x = 0; x < newWidth; x++) {
|
|
int pixel = resizedImage.getRGB(x, y);
|
|
int r = (pixel >> 16) & 0xff;
|
|
int g = (pixel >> 8) & 0xff;
|
|
int b = pixel & 0xff;
|
|
int gray = (r + g + b) / 3; // Convertir a escala de grises
|
|
|
|
// Mapear el valor de gris a un carácter ASCII
|
|
int index = gray * (ASCII_CHARS.length() - 1) / 255;
|
|
sb.append(ASCII_CHARS.charAt(index));
|
|
}
|
|
sb.append("\n");
|
|
}
|
|
|
|
return sb.toString();
|
|
}
|
|
} |