2014-02-14 34 views
1

我試圖讓這個seekbar改變黑白圖片的對比度,問題是我需要使用這個特定的庫,我必須插入段應該影響對比度的代碼。它需要一個十六進制(有點笑)我如何獲得一個搜索欄以十六進制進度

static int Lower1 = 0xFFEEEEEE; //very close to White 
    static int Lower2 = 0xFFDDDDDD; 

    static int Color1 = Color.WHITE; //0xFFFFFFFF 
    static int Color2 = Color.DKGRAY; 
    static int Color3 = Color.BLACK; //0xFF000000 

    public static void sharpen(Bitmap source) { 
     sharpen(source, Lower1, Lower2, Color1, Color2, Color3); 
    } 
    public static void sharpen(Bitmap source, int lower1) { 
     sharpen(source, lower1, Lower2, Color1, Color2, Color3); 
    } 
    public static void sharpen(Bitmap source, int lower1, int lower2, int color1, int color2, int color3) { 
     int w = source.getWidth(); 
     int h = source.getHeight(); 

     //loop through pixels and make a hard determination 
     //if white leave it, otherwise turn it black 
     for (int x = 0; x < w; x++) { 
      for (int y = 0; y < h; y++) {   
      int color = source.getPixel(x, y); 
      if (color >= lower1) 
       source.setPixel(x, y, color1); 
      else if (color >= lower2) 
       source.setPixel(x, y, color2); 
      else 
       source.setPixel(x, y,color3); 
      } 
     } 
    } 

這裏是我使用什麼搜索條:

seek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onStartTrackingTouch(SeekBar seekBar) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onProgressChanged(SeekBar seekBar, int progress, 
        boolean fromUser) { 
       sharp = back; 
       ManipBitmap.sharpen(sharp,progress); 
       image.setImageBitmap(sharp); 

      } 
     }); 

我想,當您移動滑塊,這是更新背景黑色和白色圖像 謝謝!

+0

這個方法做了什麼ManipBitmap.sharpen ?? –

+0

@mohammedmomn可能'ManipBitmap.sharpen(sharp,progress);' - >'public static void sharpen(Bitmap source,int lower1)' - >'public static void sharpen(Bitmap source,int lower1,int lower2,int color1, int color2,int color3)' –

+0

噢耶對不起,這是銳化的類在 – SketchyTurtle

回答

2

設置你SeekBar值範圍從0(0×00)到255(0xFF的),則該代碼改變爲:

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, 
     boolean fromUser) { 
    int lower = Color.argb(0xFF, progress, progress, progress); 
    sharp = Bitmap.createBitmap(back); // create a copy 

    ManipBitmap.sharpen(sharp,lower); 
    image.setImageBitmap(sharp); 
} 

Color.argb(alpha, red, green, blue)將返回ARGB對應的顏色代碼。另外,由於你的過程是破壞性的(覆蓋相同的圖像),你需要創建一個副本並對其進行操作。

+0

真棒!謝謝你,無論如何,如果我將滑塊移回圖像返回? – SketchyTurtle

+1

我認爲你必須創建一個原始圖像的副本('back')。我不確定,但嘗試將'sharp = back;'改爲'sharp = Bitmap.createBitmap(back)'。 –

+0

哈哈我知道我需要做一個它的副本我只是不知道如何,但這完全謝謝你的作品! – SketchyTurtle

相關問題