我无法在网上找到这个问题的解决方案,对不起,如果之前已经问过这个问题,我认为我的问题标题不够具体,所以,我会详细解释。
所以,我所做的是创建一个具有特定大小和类型的BufferedImage
,例如:
BufferedImage img1 = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB);
而我想要做的是使用“for”循环并循环通过假想圆内的每个单个图像的像素,让我们说圆圈从(X,Y)(0,0)开始,然后结束( X,Y)(500,500)。
现在,我想要做的是循环通过该假想圆内的每一个像素,然后再对该像素做一些事情(例如改变它的颜色)。
任何人都可以帮我做吗?谢谢!
答案 0 :(得分:0)
我想出了一个可以解决这个问题的想法,不仅适用于圆形,也适用于任何其他形状。
所以,我的想法是创建另一个缓冲图像,使其与我想要编辑的图像相同(处理),确保它的所有像素都是空白的(透明),并绘制您想要在新图像(例如圆圈)上的形状,我们保持形状颜色的轨迹,并且需要填充形状。
之后,我们使用for循环和x,y整数变量循环遍历我们要编辑的图像上的每个像素,每次循环重复时,我们检查形状的图像以查看是否在那里绘制形状,为此,我们检查像素颜色是否与形状图像上的形状颜色相同。如果是,循环已经检测到形状内部像素的坐标,然后我们可以用它做一些事情。 (for循环使用X和Y坐标整数)
以下是一个示例代码:
public static BufferedImage yourMethodName(BufferedImage inputImage, Point circlePosition, Dimension circleSize)
{
BufferedImage outputImage = inputImage;
BufferedImage circleImage = new BufferedImage(inputImage.getWidth(), inputImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics drawOnCircleImg = circleImage.getGraphics();
Color circleColor = new Color(0, 255, 0);
drawOnCircleImg.setColor(circleColor);
drawOnCircleImg.fillOval(circlePosition.x, circlePosition.y, circleSize.width, circleSize.height);
for(int y = 0; y < outputImage.getHeight(); y++)
{
for(int x = 0; x < outputImage.getWidth(); x++)
{
if(circleImage.getRGB(x, y) == circleColor.getRGB())
{
//PIXEL IS INSIDE OF THE SHAPE, IT IS DETECTED, DO SOMETHING NOW
//VARIABLES FOR THE PIXEL POSITION ARE: X, Y
}
}
}
return outputImage;
}