第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用純 Java 模仿 JavaFX 的 ColorAdjust 亮度

使用純 Java 模仿 JavaFX 的 ColorAdjust 亮度

UYOU 2023-03-02 16:07:40
我試圖將彩色圖像轉(zhuǎn)換為可用的單色圖像,但沒有“鋸齒狀”邊緣。從要求將圖像從彩色轉(zhuǎn)換為黑白的類似問題中,接受的答案之一提供了ColorAdjust使用setBrightness(-1)技術(shù)的 JavaFX 類中的簡(jiǎn)單技巧。這種技術(shù)的好處是保持黑色和白色之間的柔和邊緣,例如支持高對(duì)比度主題而無(wú)需創(chuàng)建全新的圖標(biāo)集。注意:我確實(shí)理解這里“單色”這個(gè)詞的不準(zhǔn)確性(會(huì)出現(xiàn)一些灰度),但我不確定如何描述這種技術(shù)。使用純 Java模仿該技術(shù)的方法是什么ColorAdust?期望:不需要:
查看完整描述

1 回答

?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊

這是一種純 Java 方法。創(chuàng)建圖像不需要 Swing 代碼。我們沒有將圖像更改為黑色和白色,而是將圖像更改為黑色和透明。這就是我們?nèi)绾伪Wo(hù)那些羽毛狀的邊緣。


http://img1.sycdn.imooc.com//640059880001a0ec02800212.jpg

如果你想要一個(gè)沒有 alpha 的真正的灰度圖像,制作一個(gè) graphics2d 對(duì)象,用所需的背景顏色填充它,然后將圖像繪制到它上面。


至于將白人保留為白人,這是可以做到的,但必須承認(rèn)兩件事之一。要么放棄黑白方面并采用真正的灰度圖像,要么保留黑白,但會(huì)出現(xiàn)鋸齒狀邊緣,白色羽毛會(huì)融入任何其他顏色。發(fā)生這種情況是因?yàn)橐坏┪覀儞糁袦\色像素,我們?nèi)绾沃浪菧\色特征,還是白色和另一種顏色之間的過渡像素。我不知道有什么方法可以在沒有邊緣檢測(cè)的情況下解決這個(gè)問題。


public class Main {

    private static void createAndShowGUI() {

        //swing stuff

        JFrame.setDefaultLookAndFeelDecorated(true);

        JFrame frame = new JFrame("Alpha Mask");

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.PAGE_AXIS));


        JLabel picLabel = new JLabel(new ImageIcon(getImg()));

        frame.getContentPane().add(picLabel);


        BufferedImage alphaMask = createAlphaMask(getImg());


        JLabel maskLabel = new JLabel(new ImageIcon(alphaMask));

        frame.getContentPane().add(maskLabel);


        //Display the window.

        frame.pack();

        frame.setVisible(true);

    }


    public static BufferedImage getImg() {

        try {

            return ImageIO.read(new URL("https://i.stack.imgur.com/UPmqE.png"));

        } catch (IOException e) {

            e.printStackTrace();

        }

        return null;

    }


    public static BufferedImage createAlphaMask(BufferedImage img) {

        //TODO: deep copy img here if you actually use this

        int width = img.getWidth();

        int[] data = new int[width];


        for (int y = 0; y < img.getHeight(); y++) {

            // pull down a line if argb data

            img.getRGB(0, y, width, 1, data, 0, 1);

            for (int x = 0; x < width; x++) {

                //set color data to black, but preserve alpha, this will prevent harsh edges

                int color = data[x] & 0xFF000000;

                data[x] = color;

            }

            img.setRGB(0, y, width, 1, data, 0, 1);

        }

        return img;

    }


    public static void main(String[] args) {

        javax.swing.SwingUtilities.invokeLater(() -> createAndShowGUI());

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-03-02
  • 1 回答
  • 0 關(guān)注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)