gpt4 book ai didi

java - 索引像素来为图片的某些位置着色

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:31 26 4
gpt4 key购买 nike

我正在创建一个方法,该方法采用两个参数,两个索引分别为开始和结束,该方法获取正在编辑的图片的位置并将这些像素转换为不同的颜色。使用 while 循环来索引开始和结束。

我遇到的问题是我只需要一小部分来改变颜色:

不要介意一些被注释掉的代码。我尝试了很多不同的事情。

public void negative(int start, int end)
{
Pixel[] pixelArray = this.getPixels(); //pixelarray index
Pixel pixel = null;
// int height = this.getHeight();
//int paintPoint = height / 2;
//int width = this.getWidth();
int i = 0;
int red, green, blue = 0;
// int x = 0;
Pixel topPixel = null;
Pixel bottomPixel = null;
//int startY;
//int startX;
int y = start;
int x = end;
//int count;
while( y < this.getHeight())
{
y++;
while (x < this.getWidth()) //loops through index
{
pixel = this.getPixel(x,y);
red = pixel.getRed();
green = pixel.getGreen();//collects color green
blue = pixel.getBlue();//collects color blue
Color negColor = new Color( 255 - red, 255 - green, 255 - blue);//sets new values of pixels
pixel.setColor(negColor);

x++;
//count = count + 1;
i++;//indexes continuing
}
}
}

最佳答案

图片是 2D 的,但您将其视为 1D 的(请注意,在通过内部 x 循环后,它永远不会重置为其最小值)。如果您希望为给定照片中的任意矩形着色,则参数应包含两个点:minx、miny 和 maxx maxy,然后您的一对 2D 循环将逐行访问该区域中的每个点。

// do sanity checks on your parms 

if (this.getWidth() < maxx) {
maxx = this.getWidth();
}
if (this.getHeight() < maxy) {
maxy = this.getHeight();
}
if (minx < 0) {
minx = 0;
}
if (miny < 0) {
miny = 0;
}


for (y = mixy; y < maxy; y++) {

for (x = mixx; x < maxx; x++) {

// now your have valid x and y values
}
}

关于java - 索引像素来为图片的某些位置着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35876870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com