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

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

來自 RGB byte[] 數(shù)組的 BufferedImage

來自 RGB byte[] 數(shù)組的 BufferedImage

子衿沉夜 2024-01-05 16:54:05
我有一個(gè)包含 RGB 值的 byte[] 數(shù)組。我想創(chuàng)建 BufferedImage 而不需要一一設(shè)置像素,因?yàn)閳D像可能很大。我找到了以下片段:        byte[] frame = ...;        BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);        img.setData(Raster.createRaster(img.getSampleModel(), new DataBufferByte(frame, frame.length), new Point() ) );這確實(shí)工作得很好,但有一個(gè)小問題;-)TYPE_3BYTE_BGR期望字節(jié)以相反的順序排列。所以問題是:是否可以以某種方式加載我的數(shù)組,而無需實(shí)際創(chuàng)建具有預(yù)期順序的新字節(jié)數(shù)組?如果不可能,是否有比 for 循環(huán)更好的方法將數(shù)據(jù)從 RGB 格式復(fù)制到 BGR?
查看完整描述

2 回答

?
GCT1015

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

試試這個(gè)代碼


BufferedImage img = create3ByteRGBImage(int width, int height, new int[] {8, 8, 8},

                                     new int[] {0, 1, 2});    


private BufferedImage create3ByteRGBImage(width, height, int[] nBits, int[] bOffs) {

            ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);

            ColorModel colorModel =

                new ComponentColorModel(cs, nBits,

                                        false, false,

                                        Transparency.OPAQUE,

                                        DataBuffer.TYPE_BYTE);

            WritableRaster raster =

                Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE,

                                               width, height,

                                               width*3, 3,

                                               bOffs, null);

            return new BufferedImage(colorModel, raster, false, null);

        }


查看完整回答
反對(duì) 回復(fù) 2024-01-05
?
有只小跳蛙

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

前面的答案有效,但可以簡(jiǎn)化以更具可讀性:


ColorSpace colorSpace = ColorSpace.getInstance(ColorSpace.CS_sRGB);


ColorModel model = new ComponentColorModel(

    colorSpace, 

    false,

    true, 

    Transparency.OPAQUE, 

    DataBuffer.TYPE_BYTE

);


WritableRaster raster = Raster.createInterleavedRaster(

    DataBuffer.TYPE_BYTE, 

    width, 

    height, 

    3, 

    null

);


BufferedImage image = new BufferedImage(model, raster, true, null);


查看完整回答
反對(duì) 回復(fù) 2024-01-05
  • 2 回答
  • 0 關(guān)注
  • 218 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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