ImageFilterView를 사용하면 쉽게 이미지 조정이 가능했습니다.

ImageFilterView를 사용하면 이미지를 표시할 때 밝기와 채도를 간단하게 조정할 수 있어요!

ConstraintLayout에 포함되어 있으므로 build.gradle에 추가합시다.2.0.0 이상이 필수이므로 현재 최신 2.0.0-beta2을 설치했습니다.
dependencies {
    ...
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2'
    ...
}

테스트를 위해 SeekBar를 사용하여 조정할 수 있습니다.
<androidx.constraintlayout.utils.widget.ImageFilterView
    android:id="@+id/image"
    android:src="@drawable/image" />
<SeekBar
    android:id="@+id/saturation"
    android:max="200"
    android:progress="100" />
<SeekBar
    android:id="@+id/contrast"
    android:max="200"
    android:progress="100" />
<SeekBar
    android:id="@+id/brightness"
    android:max="200"
    android:progress="100" />
<SeekBar
    android:id="@+id/warmth"
    android:max="500"
    android:progress="100" />
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 各プロパティによって、最大値を調整
        saturation.setOnChangeListener {
            image.saturation = it * 2
        }
        contrast.setOnChangeListener {
            image.contrast = it * 2
        }
        brightness.setOnChangeListener {
            image.brightness = it * 2
        }
        warmth.setOnChangeListener {
            image.warmth = it * 5
        }
    }
}

// SeekBarの値が変更されたときのリスナーを設定
fun SeekBar.setOnChangeListener(listener: ((Float) -> Unit)) {
    this.setOnSeekBarChangeListener(object: SeekBar.OnSeekBarChangeListener {
        override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {
            listener(this@setOnChangeListener.progress / this@setOnChangeListener.max.toFloat())
        }

        override fun onStartTrackingTouch(p0: SeekBar?) {
        }

        override fun onStopTrackingTouch(p0: SeekBar?) {
        }
    })
}

조정할 수 있는 주요 항목은 이하.
  • saturation (채도)
    1 = 보통 0 = 그레이 스케일, 2 = 채도 강화
  • Contrast (콘트라스트)
    1 = 보통 0 = 회색, 2 = 고대비
  • Brightness (밝기)
    1 = 보통 0 = 새까만, 2 = 밝기 강화
  • Warmth (색온도)
    1 = 보통 2 = 빨간색, 5 = 파란색
    (문서에서는 이렇게 쓰여져 있지만, 0으로 하면 파랗게 되므로 잘못되어 있을지도)



  • 샘플 코드

    좋은 웹페이지 즐겨찾기