日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/4/5 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java bufferedimage颜色_java – BufferedImage意外地改变了颜色 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我有以下代碼,它創建灰度Buffered

Image,然后設置每個像素的隨機顏色.

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%的像素出現奇怪的行為,我設置顏色,然后它具有不同于先前設置的值.我用錯誤的方式設置顏色嗎?

最佳答案 這是你的解決方案:禁止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很糟糕,因為編碼是一個字節數組(8位),你必須使用getRGB操作RGB值.柵格為您完成所有轉換工作.

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。