用java 写一个字符画表白卡,可以使用女神的静态或者动态GIF图片作为输入源; 可以在操作台生成、也可以返回输出到txt文本、也可以返回JPEG格式的图片; 大家也可以自由发挥,自学图形用户界面以及多媒体知识,在电子面板中显示字符串、图片、动态显示相识时间、音频等组件。
时间: 2023-11-28 09:50:03 浏览: 24
好的,我可以为您提供一个简单的字符画表白卡生成器的Java代码,使用女神的静态或动态GIF图片作为输入源。代码如下:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import javax.imageio.ImageIO;
public class CharArt {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入女神的图片路径:");
String imagePath = scanner.nextLine();
System.out.println("请输入生成字符画的宽度(建议不超过200):");
int width = scanner.nextInt();
scanner.close();
BufferedImage image = ImageIO.read(new File(imagePath));
int height = (int) ((double) image.getHeight() / image.getWidth() * width);
BufferedImage resizedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = resizedImage.getGraphics();
g.drawImage(image, 0, 0, width, height, null);
g.dispose();
FileWriter writer = new FileWriter("output.txt");
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
Color color = new Color(resizedImage.getRGB(x, y));
double brightness = (color.getRed() + color.getGreen() + color.getBlue()) / 3.0 / 255.0;
if (brightness < 0.2) {
writer.write("@");
} else if (brightness < 0.4) {
writer.write("#");
} else if (brightness < 0.6) {
writer.write("&");
} else if (brightness < 0.8) {
writer.write("$");
} else {
writer.write("*");
}
}
writer.write("\n");
}
writer.close();
System.out.println("字符画已生成并保存在output.txt中。");
}
}
```
您可以将女神的图片放在与此代码相同的文件夹中,然后运行此程序并按照提示输入文件名和生成字符画的宽度。程序将输出一个字符画到output.txt文件中。
如果您想将字符画输出为JPEG格式的图片,可以使用以下代码:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import javax.imageio.ImageIO;
public class CharArt {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入女神的图片路径:");
String imagePath = scanner.nextLine();
System.out.println("请输入生成字符画的宽度(建议不超过200):");
int width = scanner.nextInt();
scanner.close();
BufferedImage image = ImageIO.read(new File(imagePath));
int height = (int) ((double) image.getHeight() / image.getWidth() * width);
BufferedImage resizedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = resizedImage.getGraphics();
g.drawImage(image, 0, 0, width, height, null);
g.dispose();
BufferedImage charImage = new BufferedImage(width * 8, height * 8, BufferedImage.TYPE_INT_RGB);
Graphics charGraphics = charImage.getGraphics();
charGraphics.setColor(Color.WHITE);
charGraphics.fillRect(0, 0, width * 8, height * 8);
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
Color color = new Color(resizedImage.getRGB(x, y));
double brightness = (color.getRed() + color.getGreen() + color.getBlue()) / 3.0 / 255.0;
if (brightness < 0.2) {
charGraphics.setColor(Color.BLACK);
} else if (brightness < 0.4) {
charGraphics.setColor(new Color(64, 64, 64));
} else if (brightness < 0.6) {
charGraphics.setColor(new Color(128, 128, 128));
} else if (brightness < 0.8) {
charGraphics.setColor(new Color(192, 192, 192));
} else {
charGraphics.setColor(Color.WHITE);
}
charGraphics.fillRect(x * 8, y * 8, 8, 8);
}
}
charGraphics.dispose();
ImageIO.write(charImage, "JPEG", new File("output.jpg"));
System.out.println("字符画已生成并保存在output.jpg中。");
}
}
```
此代码将生成一个更大的字符画,并将其输出为JPEG格式的图片。