2012-05-31 2 views
4

getpixels() 및 setpixels() api를 사용 중입니다. getpixel API를 사용하여 하나씩 픽셀을 가져 와서 일부 수정을하고 픽셀을 설정하는 비트 맵에서 루프의 모든 픽셀에 대해이 작업을 수행합니다. 이유를 찾을 수없는 모든 픽셀에 대해 동일한 알파 값을 볼 수있었습니다. 해결책을 제안하십시오. 당신의 페인트 객체에 Please find the attached image to see the issue안드로이드의 setpixels 이후 이미지의 가장자리가 부드럽 지 않음

    int width, height; 
      height = bmpOriginal.getHeight(); 
      width = bmpOriginal.getWidth(); 

      int[] pix = new int[width * height]; 
      bmpOriginal.getPixels(pix, 0, width, 0, 0, width, height); 



      int R, G, B, A; 


      float[] hsv = new float[3]; 
      float[] hsv2 = new float[3]; 
      float[] hsv3 = new float[3]; 



      for (int y = 0; y < height; y++){ 
      for (int x = 0; x < width; x++) 
      { 
       int index = y * width + x; 
       R = (pix[index] >> 16) & 0xff;  //bitwise shifting 
       G = (pix[index] >> 8) & 0xff; 
       B = pix[index] & 0xff;    


       Color.RGBToHSV(R, G, B, hsv);     

       int value = tempBitmap.getPixel(x, y); 


       Color.colorToHSV(value, hsv2);       

       int x = Color.HSVToColor(hsv3); 
       pix[index] = x; 


       } 

      } 

      bmpOriginal.setPixels(pix, 0, width, 0, 0, width, height); 
+0

몇 가지 코드를 볼 수 있습니까? – Ronnie

+0

어떻게이 문제를 해결 했습니까? 나는 또한 이것에 붙어있다. – VickyS

+0

나도 이걸 붙들고있어. – dasdasd

답변

2

사용 setAntiAlias(true) API는 안티 앨리어싱을 켭니다. 페인트에 setFilterBitmap(true)도 시도해보십시오.

비트 맵에서 BitmapDrawable을 만듭니다. 그런 다음 사용하기 전에 mBmpdrawable.setAntiAlias(true);으로 전화하십시오. 또한 전화를 걸어보십시오 mBmpdrawable.setFilterBitmap(true)

+0

고마워, 지금이 시도했지만 여전히이 문제를 볼 수 있습니다. 친절하게 이것에 대해 조금 더 설명하십시오. – pavan

+0

픽셀을 가져온 후 픽셀을 설정하기 전에 페인트 객체를 사용하지 않습니다. 색상 API를 사용하여 색상을 변경하고 있습니다. 그래서이 경우 setAntiAlis()를 어떻게 적용해야할까요? – pavan

+0

코드를 추가했습니다. – pavan

관련 문제