我想改变位图的HSV我在网上找到了一些帮助,但他们正在改变整个图像的HSV。在我的情况下,我有循环选择器,使用户能够选择图像的特定部分,而不是更改其HSV。它看起来像这样
我们可以不使用任何其他第三方图像处理库吗?
答案 0 :(得分:1)
如果您知道如何专门获取圆圈的像素索引,请执行以下操作:
int pixel = bitmap.getPixel(X,Y);
float[] HSV=new float[3];
Color.RGBToHSV(Color.red(pixel), Color.green(pixel), Color.blue(pixel), HSV);
// Manipulate the HSV array as you want then,
bitmap.setPixel(X,Y, Color.HSVToColor(HSV));
PS:如果你想知道如何获得像素的X和Y坐标,请做评论。我会根据您的要求编辑帖子。
编辑:
如果你有圆心的坐标和你想要操纵的圆的半径,你可以通过以下方式获得圆形区域的像素(并对其进行操作)。
int centerX = 100; // This is the X co-ordinate of the center of your circle
int centerY = 100; // This is the Y co-ordinate of the center of your circle
int radius = 40; // This is the radius of the circle you want
for(int Y=centerY-radius; Y<=centerY+radius;Y++)
{
for(int X=centerX-radius;X<=centerX+radius;X++)
{
int distance = (int)Math.sqrt(Math.pow((X-centerX),2) + Math.pow((Y-centerY),2));
if(distance<=radius)
{
int pixel = bitmap.getPixel(X,Y);
float[] HSV=new float[3];
Color.RGBToHSV(Color.red(pixel), Color.green(pixel), Color.blue(pixel), HSV);
// Manipulate the HSV array as you want then,
bitmap.setPixel(X,Y, Color.HSVToColor(Color.alpha(pixel),HSV));
}
}
}
答案 1 :(得分:0)
或
您可以使用位图创建画布使用
Canvas canvas = new Canvas(bitmap);
您可以在原始位图上添加新内容。