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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 ImageIO.read() 時忽略 Alpha 通道

使用 ImageIO.read() 時忽略 Alpha 通道

守候你守候我 2021-12-01 19:17:30
我目前在讀取 PNG 文件時遇到了 alpha 通道問題 ImageIO.read(...)fileInputStream = new FileInputStream(path);BufferedImage image = ImageIO.read(fileInputStream);//Just copying data into an integer arrayint[] pixels = new int[image.getWidth() * image.getHeight()];image.getRGB(0, 0, width, height, pixels, 0, width);但是,當嘗試通過如下所示的位移位從像素陣列讀取值時,alpha 通道總是返回 -1int a = (pixels[i] & 0xff000000) >> 24;int r = (pixels[i] & 0xff0000) >> 16;int g = (pixels[i] & 0xff00) >> 8;int b = (pixels[i] & 0xff);//a = -1, the other channels are fine通過谷歌搜索問題,我了解到BufferedImage需要如下定義類型以允許 alpha 通道工作:BufferedImage image = new BufferedImage(width, height BufferedImage.TYPE_INT_ARGB);但是ImageIO.read(...)返回 aBufferedImage而不提供指定圖像類型的選項。那么我該怎么做呢?任何幫助深表感謝。提前致謝
查看完整描述

2 回答

?
墨色風雨

TA貢獻1853條經(jīng)驗 獲得超6個贊

我認為,您的“int unpacking”代碼可能是錯誤的。


我使用了(pixel >> 24) & 0xff(pixel特定像素的 rgba 值在哪里)并且效果很好。


我將其與 的結果進行了比較,結果顯示java.awt.Color效果很好。


我直接從 中“竊取”了“提取”代碼java.awt.Color,這是另一個原因,我傾向于不以這種方式執(zhí)行這些操作,很容易把它們搞砸


還有我很棒的測試代碼...


BufferedImage image = ImageIO.read(new File("BYO image"));

int width = image.getWidth();

int height = image.getHeight();

for (int y = 0; y < height; y++) {

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

        int pixel = image.getRGB(x, y);

        //value = 0xff000000 | rgba;

        int a = (pixel >> 24) & 0xff;

        Color color = new Color(pixel, true);

        System.out.println(x + "x" + y + " = " + color.getAlpha() + "; " + a);

    }

}

注意:在有人說這是低效之前,我不是為了效率,我是為了快速寫作


您可能還想看看如何在 Java 中將 get.rgb(x,y) 整數(shù)像素轉換為 Color(r,g,b,a)?,我也用它來驗證我的結果


查看完整回答
反對 回復 2021-12-01
?
拉莫斯之舞

TA貢獻1820條經(jīng)驗 獲得超10個贊

我認為問題在于您使用的是算術移位 ( >>) 而不是邏輯移位 ( >>>)。因此0xff000000 >> 24變成0xffffffff(即-1


查看完整回答
反對 回復 2021-12-01
  • 2 回答
  • 0 關注
  • 335 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號