답변
나는이 질문에 얼마 전에 질문을 받았다 알아,하지만 난 당신이 드로어 블이 있고 그냥 같은 당김을 표시 할 경우에 작동하는 간단한 해결책을 가로 질러왔다 그레이 스케일. 캔버스 또는 화가가 필요하지 않습니다 ...
protected Drawable convertToGrayscale(Drawable drawable)
{
ColorMatrix matrix = new ColorMatrix();
matrix.setSaturation(0);
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
drawable.setColorFilter(filter);
return drawable;
}
희망이 너무 도움이됩니다!
은 분명히 당신은 색 공간 변환 모든 종류의 작업을 수행 할 ColorMatrix
클래스를 사용할 수 있습니다. 그것은 setSaturation()
방법을 사용하여 쉽게 색상 대 그레이 스케일 변환 (채도 0)을 만듭니다.
따라서이 필터를 사용하여 이미지의 새로운 복사본을 페인트 할 수 있습니다. 나는 이것을 시도하지는 않았지만 정상적으로 작동 할 것입니다 :
Bitmap grayscaleBitmap = Bitmap.createBitmap(
colorBitmap.getWidth(), colorBitmap.getHeight(),
Bitmap.Config.RGB_565);
Canvas c = new Canvas(grayscaleBitmap);
Paint p = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(cm);
p.setColorFilter(filter);
c.drawBitmap(colorBitmap, 0, 0, p);
이미지의 비활성화 된 버전이 아니라 프로그래밍 방식으로이 작업을 구체적으로 수행하고 싶습니까?
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/btn_default_normal_disable" />
<item android:state_pressed="true"
android:drawable="@drawable/btn_default_pressed" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/btn_default_selected" />
<item android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_focused="true"
android:drawable="@drawable/btn_default_normal_disable_focused" />
<item
android:drawable="@drawable/btn_default_normal_disable" />
</selector>
예, 인스턴스별로 처리하고 싶습니다. 그래도 스 니펫 주셔서 감사합니다. – yanchenko
@intgr의 답변은 다음과 같습니다.
1. Bitmap.Config.ARGB_8888
은 알파 채널을 보존합니다.
2. 약간의 추가 코드 :
//remember, you are converting a .png image, as opposed to a Drawable defined in .xml
Bitmap colorBitmap = ((BitmapDrawable)drawable).getBitmap();
// the code by intgr
Drawable grayscaleDrawable = new BitmapDrawable(grayscaleBitmap);
작은 Typo : Bitmap.Config.RGB_8888은 Bitmap.Config.ARGB_8888이어야합니다. 고마워. 고마워. – Minsky
- 1. 그레이 스케일 (matlab)
- 2. 그레이 스케일 번역 문제
- 3. 그레이 스케일 이미지에서 일치하는 문자
- 4. Matlab에서 이진 이미지를 그레이 스케일 이미지로 변환합니다.
- 5. 그레이 스케일 Iplimage to android 비트 맵
- 6. 그레이 스케일 BMP 파일을 만들 수 있습니까?
- 7. JavaFX의 컬러 스포트라이트가있는 그레이 스케일 이미지
- 8. 원시 그레이 스케일 바이너리를 JPEG로 변환
- 9. 그레이 스케일 제거 TabWidget 테두리/가장자리
- 10. 자바 스크립트에서 이미지 그레이 스케일 만들기
- 11. 그레이 스케일 이미지 변환 터보 C++
- 12. 아이폰에서 그레이 스케일 비디오를 녹화하는 방법은 무엇입니까?
- 13. CSS - 그레이 스케일 이미지 컬러 화
- 14. 초창기 그레이 스케일 값을 사용하는 잠금 비트
- 15. 8bpp를 그레이 스케일 비트 맵 (관리되지 않는 C++) 나는 성공없이 8bpp를 그레이 스케일 비트 맵에 그리는 시도했습니다
- 16. Qt-OpenCV : Qt에서 그레이 스케일 이미지 (opencv)를 표시하는 방법
- 17. 32 비트 RGBA 이미지를 그레이 스케일 보존 알파로 변환하는 방법
- 18. 그레이 스케일 비트 맵을 알파 마스크로 변환하는 방법은 무엇입니까?
- 19. CImage를 사용하여 그레이 스케일 BMP의 char 배열을 올바르게로드하려면 어떻게합니까?
- 20. 32 비트 그레이 스케일 이미지 CGBitmapContextCreate가 항상 검은 색
- 21. Objective C를 사용하여 RGB 컬러 이미지를 그레이 스케일 이미지로 변경
- 22. 그레이 스케일 이미지에 색상 적용, 알파 값 보존 (iOS/Quartz)
- 23. Android : Drawable-hdpi, Drawable-mdpi, Drawable-ldpi?
- 24. Drawable-hdpi, Drawable-mdpi, Drawable-ldpi 안드로이드
- 25. setBackgroundColor (drawable)! = android : background = (drawable)?
- 26. android 9 패치 drawable xml
- 27. 이미지를 그레이 스케일로 변환
- 28. DirectShow를 Renderstream 내가 8 비트 그레이 스케일 비트 맵으로 구성된 비디오를 재생하기 위해 DirectShow를 그래프를 만들려고 해요 그레이 스케일 비트 맵
- 29. "@android : drawable/ic_"vs "@ * android : drawable/ic_"
- 30. 아이폰은 그레이 스케일 스크린 샷을 찍고 있습니까? 그레이 스케일의 화면을 캡처 할 수있는 간단한 방법이 있는지 궁금 해요
와우, 너무 간단, 너무 좋아! – tacone
남자, 당신은 마법사입니다, 롤빵 고마워요! – Sipty
좋은 팁! 흥미로운 점은 ContextCompat.getDrawable (context, R.drawable.myId);를 전달하여이 메서드를 실행하면됩니다. 다음 번에 동일한 드로어 블을 가져와야 할 때 컬러 필터가 이미 설정되어 있습니다. 내 파트의 경우 색을 내 드로어 블에서 다시 얻으려면 컬러 필터를 제거해야합니다. – Tobliug