溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用java制作比心圖案

發(fā)布時(shí)間:2023-04-20 09:48:23 來(lái)源:億速云 閱讀:102 作者:iii 欄目:編程語(yǔ)言

這篇文章主要介紹“如何使用java制作比心圖案”,在日常操作中,相信很多人在如何使用java制作比心圖案問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何使用java制作比心圖案”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

1、改變Spring啟動(dòng)時(shí)候的圖標(biāo)

這一步太簡(jiǎn)單了,就是在Spring項(xiàng)目下的resources文件夾下加一個(gè)banner.txt即可。

這個(gè)時(shí)候你可以創(chuàng)建完了文件之后,隨便加一些符號(hào)嘗試一下即可。

2、自定義圖案

可以找到一個(gè)心儀的圖片,然后通過(guò)下方程序自動(dòng)生成符號(hào)圖案。

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class AscPic {
    public static void main(String[] args) throws IOException {
        String path = "d:/heart3.jpg";//導(dǎo)入的圖片
        String base = "love";//將會(huì)用這個(gè)字符串里的字符填充圖片
        BufferedImage image = ImageIO.read(new File(path));//讀入圖片,并用圖片緩沖區(qū)對(duì)象來(lái)接收
        float scale = (float) 1;
        //獲取縮放后的寬高
        int width = (int) (image.getWidth()*scale)*3;
        int height = (int) (image.getHeight()*scale);
        //調(diào)用縮放方法獲取縮放后的圖片
        Image img = image.getScaledInstance(width , height, Image.SCALE_DEFAULT);
        image = toBufferedImage(img);
        int[][] imageArray = new int[image.getHeight()][image.getWidth()];
        int[] sum = new int[image.getWidth()];
        int cnt = 0;
        //雙層for循環(huán),遍歷圖片
        for (int y = 0; y < image.getHeight(); y++) {//先豎向遍歷,再橫向遍歷,即一行一行的找,后面也會(huì)一行一行的打印
            for (int x = 0; x < image.getWidth(); x++) {
                int color = image.getRGB(x, y);//圖片緩沖區(qū)自帶的方法,可以得到當(dāng)前點(diǎn)的顏色值,返回值是int類型
                int r=(color>>16)&0xff;
                int g=(color>>8)&0xff;
                int b=color&0xff;
                float gray = 0.299f * r + 0.578f * g + 0.114f * b;//灰度值計(jì)算公式,固定比例,無(wú)需理解
                int index = Math.round(gray * (base.length()) / 255);
                if(index>=base.length()) {
                    imageArray[y][x] = -1;
                }else {
                    imageArray[y][x] = cnt++;
                    sum[x]+=index;
                }
            }
        }
        for(int i = 0;i<image.getHeight();i++){
            for(int j = 0;j<image.getWidth();j++){
                if(sum[j]==0) continue;
                else if(imageArray[i][j]==-1)
                    System.out.print(" ");//白色的地方打空格,相當(dāng)于白色背景,這樣圖片輪廓比較明顯
                else
                    System.out.print(base.charAt(imageArray[i][j]%base.length()));//有顏色的地方打字符
            }
            System.out.println();//一行打完,換行
        }
    }
    public static BufferedImage toBufferedImage(Image image) {
        if (image instanceof BufferedImage) {
            return (BufferedImage) image;
        }
        image = new ImageIcon(image).getImage();
        boolean hasAlpha = false;
        BufferedImage bimage = null;
        GraphicsEnvironment ge = GraphicsEnvironment
                .getLocalGraphicsEnvironment();
        try {
            int transparency = Transparency.OPAQUE;
            if (hasAlpha) {
                transparency = Transparency.BITMASK;
            }
            GraphicsDevice gs = ge.getDefaultScreenDevice();
            GraphicsConfiguration gc = gs.getDefaultConfiguration();
            bimage = gc.createCompatibleImage(image.getWidth(null), image
                    .getHeight(null), transparency);
        } catch (HeadlessException e) {
        }
        if (bimage == null) {
            int type = BufferedImage.TYPE_INT_RGB;
            if (hasAlpha) {
                type = BufferedImage.TYPE_INT_ARGB;
            }
            bimage = new BufferedImage(image.getWidth(null), image
                    .getHeight(null), type);
        }
        Graphics g = bimage.createGraphics();
        g.drawImage(image, 0, 0, null);
        g.dispose();
        return bimage;
    }
}

3、通過(guò)運(yùn)行上面的代碼+這個(gè)簡(jiǎn)單的圖案,可以生成一個(gè)灰白色的比心圖案,如下所示

如何使用java制作比心圖案

到此,關(guān)于“如何使用java制作比心圖案”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI