网站客服:zx81024163 |

请接收程序员的浪漫!你见过那些浪漫的代码?

2024-02-27 15:06:35发布    浏览328次    信息编号:100432

友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。

请接收程序员的浪漫!你见过那些浪漫的代码?

程序员可以做什么浪漫的活动?

有很多可供选择,然后就只剩下一个小问题了。 我在5月20日和5月21日送了小礼物可以原谅吗? (请看这里的美女们摸着良心在评论区大声告诉我“可以”好吗)

接上文,不管有多少小仙女告诉我可以,我还是不敢相信。 接下来我会免费给大家分享一个价值99元的创意,用她的名字画一幅画(如下),然后深情地告诉她,这都是手绘的。 工作量这么大,耽误一两天不是很正常吗? (请大声告诉我,这很聪明吗?)

接下来,老司机教大家如何用三十行画出她的艺术画,上面写着她(他)的名字。

写了这么多,还没进入主题。 这篇文章太水了,我都看不下去了。 让我们回到主题。 接下来我们看看如何用她的名字来画画?

1、作战思路

目标确定后,下一步就是制定计划。 大家都知道计算机的世界是由0和1组成的,那么图片的世界是由什么组成的呢?

我已经从聪明机智的朋友那里听到了答案。 是的,没错,它们就是一一颜色的像素块。

那怎么办呢?答案已经出来了,各位小英雄小仙女们,请大声告诉我,好吗?

咳咳,说正经的,把这些像素一一屏蔽掉,换成她(他)的名字就可以了。

2、战前准备

俗话说,兵马未动,粮草先行。 在正式开始工作之前,先做好一些必要的准备工作。

3. 发动战争

感谢大家选择 java 作为我的天赋技能。 让我们看看如何实现我们的目标。 就像把大象放进冰箱只需要三个步骤一样,需要实现的步骤也非常简单。

拆卸步骤:

实现源码:

public static Color int2color(int color) {
    int a = (0xff000000 & color) >>> 24;
    int r = (0x00ff0000 & color) >> 16;
    int g = (0x0000ff00 & color) >> 8;
    int b = (0x000000ff & color);
    return new Color(r, g, b, a);
}
public void renderCharPhoto(String imgPath, String name, String saveFile) throws Exception {
	// 第一步,载图片
    BufferedImage img = ImageIO.read(new File(imgPath));
    int w = img.getWidth(), h = img.getHeight();
	// 第二步,创建等大的画板
    BufferedImage output = new BufferedImage(w, h, img.getType());
    Graphics2D g2d = output.createGraphics();
    g2d.setFont(new Font("宋体", Font.PLAIN, 1));
    int index = 0;
    for (int x = 0; x < w; x++) {
        for (int y = 0; y < h; y++) {
        	// 第三步,遍历每个像素点,并获取对应的rgb
            char ch = name.charAt((index++) % name.length());
            g2d.setColor(int2color(img.getRGB(x, y)));
            // 第四步,写上他她它的名字
            g2d.drawString(String.valueOf(ch), x, y);
        }
    }
	// 第五步,保存图片
    g2d.dispose();
    ImageIO.write(output, "png", new File(saveFile));
}

就这么简单,运行一下试试效果

似乎有什么不对劲。 这与原始图片没有什么不同。 那么问题出在哪里呢? 我的钛合金眼睛看不到某个像素上的文字,怎么办?

这说得通。 如果把图片放大就可以了。 然后调整上面的画板,放大24倍,设置字体大小为20,字与字之间留一些间距。

public void renderCharPhoto(String imgPath, String name, String saveFile) throws Exception {
    BufferedImage img = ImageIO.read(new File(imgPath));
    int w = img.getWidth(), h = img.getHeight();
    BufferedImage output = new BufferedImage(w * 24, h * 24, img.getType());
    Graphics2D g2d = output.createGraphics();
    g2d.setFont(new Font("宋体", Font.PLAIN, 20));
    int index = 0;
    for (int x = 0; x < w; x++) {
        for (int y = 0; y < h; y++) {
            char ch = name.charAt((index++) % name.length());
            g2d.setColor(int2color(img.getRGB(x, y)));
            g2d.drawString(String.valueOf(ch), x * 24 + 2, y * 24 + 2);
        }
    }
    g2d.dispose();
    ImageIO.write(output, "png", new File(saveFile));
}

这说得通。 如果把图片放大就可以了。 然后调整上面的画板,放大24倍,设置字体大小为20,字与字之间留一些间距。

如果对方熟悉你的字体怎么办?

也有解决办法。 在应用商店中搜索“汉字”,你还可以创建属于自己的独特字体。

太好了,现在我感觉自己无可挑剔了。 我需要做的就是找到一家印有上面图片的印刷店,将其绘制出来,然后就完成了。 拿走吧,不用谢。

如果不幸的是,当你有一个机智的伙伴时,那么她/他/它很可能会问你的灵魂,你是怎么做到的,文字和间距是一模一样的?

提醒:请联系我时一定说明是从星空网上看到的!