日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

java bufferedimage颜色_java – BufferedImage意外地改变了颜色

發(fā)布時(shí)間:2025/4/5 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java bufferedimage颜色_java – BufferedImage意外地改变了颜色 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我有以下代碼,它創(chuàng)建灰度Buffered

Image,然后設(shè)置每個(gè)像素的隨機(jī)顏色.

import java.awt.image.BufferedImage;

public class Main {

public static void main(String[] args) {

BufferedImage right = new BufferedImage(100, 100, BufferedImage.TYPE_BYTE_GRAY);

int correct = 0, error = 0;

for (int i = 0; i < right.getWidth(); i++) {

for (int j = 0; j < right.getHeight(); j++) {

int average = (int) (Math.random() * 255);

int color = (0xff << 24) | (average << 16) | (average << 8) | average;

right.setRGB(i, j, color);

if(color != right.getRGB(i, j)) {

error++;

} else {

correct++;

}

}

}

System.out.println(correct + ", " + error);

}

}

大約25-30%的像素出現(xiàn)奇怪的行為,我設(shè)置顏色,然后它具有不同于先前設(shè)置的值.我用錯(cuò)誤的方式設(shè)置顏色嗎?

最佳答案 這是你的解決方案:禁止getRGB并使用Raster(比getRGB更快更容易)或甚至更好的DataBuffer(最快但你必須處理編碼):

import java.awt.image.BufferedImage;

public class Main

{

public static void main(String[] args)

{

BufferedImage right = new BufferedImage(100, 100, BufferedImage.TYPE_BYTE_GRAY);

int correct = 0, error = 0;

for (int x=0 ; x < right.getWidth(); x++)

for (int j = 0; j < right.getHeight(); j++)

{

int average = (int) (Math.random() * 255) ;

right.getRaster().setSample(x, y, 0, average) ;

if ( average != right.getRaster().getSample(x, y, 0) ) error++ ;

else correct++;

}

System.out.println(correct + ", " + error);

}

}

在你的情況下getRGB很糟糕,因?yàn)榫幋a是一個(gè)字節(jié)數(shù)組(8位),你必須使用getRGB操作RGB值.柵格為您完成所有轉(zhuǎn)換工作.

總結(jié)

以上是生活随笔為你收集整理的java bufferedimage颜色_java – BufferedImage意外地改变了颜色的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。