iOS에서 작업하고있는 응용 프로그램에서 사용자로부터 그림을 얻어야하며, 그런 다음이를 우리가 모두 좋아하는 딱딱하고 픽셀 화 된 8 비트 스타일로 변환해야합니다. 나는 몇몇 Quartz/CoreImage (필자의 Mac과 iOS 개발자가 methink를 뒤섞 었음) 필터를 사용한다고 가정한다. 나는 이들 중 어느 것도 사용한 적이 없기 때문에 어떤 도움을 주시면 감사하겠습니다.iOS의 8 비트 이미지
답변
이 과정으로 만 사용할 수 있음을 명심해야
가 직접 작성하는 것은 매우 간단합니다. CoreGraphics를 사용하여 CGImage 및 CGBitmapContext를 사용하여 비트 맵에 렌더링 할 수 있습니다. 그런 다음 픽셀 값을 직접 조작하십시오.
8 비트 표현 중 하나를 것 :
- 사용 컬러 룩업 테이블/
- 컬러 맵 또는 RRRGGGBB 형식
전자는 더 복잡하다. 이것이 처음이라면 픽셀 값을 대략 RRRGGGBB로 변환하여 시작하십시오. CoreGraphics를 통해 비트 맵을 만들고 비트 맵을 만드는 방법을 알고 있다고 가정하면 (많은 예제가 있습니다.) 모두 설정되어 있습니다!
코어 이미지, 특히 CIColorPosterize
및 CIPixellate
필터를 사용할 수 있습니다. 코어 이미지는 GPU를 이용하고 수동으로 비트 맵을 조작하는 것보다 훨씬 빠르다는 이점이 있습니다. 당신이 당신에게 결과를주는 필터 값을 얻기 위해 /Developer/Applications/Graphics Tools
에서 찾을 수있는 당신은 "코어 이미지 펀 하우스"응용 프로그램과 함께 놀러해야
NSURL* imageURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForImageResource:@"yourSourceImage"]];
CIImage* inputImage = [[CIImage alloc] initWithContentsOfURL:imageURL];
CIFilter* posterize = [CIFilter filterWithName:@"CIColorPosterize"];
[posterize setDefaults];
[posterize setValue:[NSNumber numberWithDouble:8.0] forKey:@"inputLevels"];
[posterize setValue:inputImage forKey:@"inputImage"];
CIFilter* pixellate = [CIFilter filterWithName:@"CIPixellate"];
[pixellate setDefaults];
[pixellate setValue:[NSNumber numberWithDouble:4.0] forKey:@"inputScale"];
[pixellate setValue:[posterize valueForKey:@"outputImage"] forKey:@"inputImage"];
CIImage* outputImage = [pixellate valueForKey:@"outputImage"];
[inputImage release];
//do something with outputImage
:
간단한 예는 다음과 같을 것 필요. 당신은 코어 이미지가 아이폰 OS 5
이 코드를 사용하려고하는데이 코드를 사용할 수 없습니다. 내 응용 프로그램이 IOS 4.3을 지원해야하므로 NSClassFromString을 사용하도록 약간 수정했습니다. 나는이 방법을 사용하고 있습니다 : http://pastebin.com/5hwb0xcr 내 이미지보기는 공백으로 남아 있지만 입력 된 CIImage를 UIImage로 다시 변환하려고하면 내 이미지보기에 원본 이미지가 표시됩니다. 어떤 아이디어? –
Argh. 난 그냥 iOS 에서이 시도하고 문제의 두 필터는'nil'을 반환합니다. iOS 문서를 확인한 후, iOS에서 'CIColorPosterize'도 아니고 'CIPixellate'도 사용할 수 없다는 것을 발견했습니다. Mac 전용으로 보입니다. 이걸로 정원 경로를 안내해 주셔서 죄송합니다. iOS에는 Core Image 필터의 하위 집합 만 있다는 사실을 잊었습니다. –
젠장, 내 자신의 이미지 처리 코드를 굴려야 할 것 같아. 답변을 주셔서 감사합니다. –
- 1. 8 비트 인덱스 이미지로 이미지 복사
- 2. iOS의 비트 맵/rgb 데이터를 사용하여 이미지 애니메이션을 적용하는 방법
- 3. iOS의 WebP 이미지 형식
- 4. iOS의 그리드 이미지
- 5. iOS의 Tableviews에서 이미지 만들기
- 6. iOS의 동적 이미지 렌더링
- 7. iOS의 이미지 필터링 옵션
- 8. 8 비트 PictureBox 디스플레이 해상도
- 9. Adobe AIR에서 iOS의 비트 맵 데이터 저장
- 10. OpenGL에서 8 비트 bmp를로드하려면 어떻게해야합니까?
- 11. 2 비트 분기 예측기에서 8 비트 예측기로
- 12. 팔레트 정보로 8 비트 비트 맵 자르기
- 13. Java에서 8 비트 회색조 RAW 이미지로 이미지 변환
- 14. iOS의 다른 이미지 위에 이미지 오버레이
- 15. iOS의 이미지 선택기에서 RAW 이미지 형식을 지원합니까?
- 16. IOS의 비디오 파일에 이미지 삽입
- 17. 비트 연산, 비트 저장, 8 비트 이후 확장
- 18. GSM 8 비트 데이터 인코딩
- 19. matlab에 8 비트 2d 배열
- 20. 64 비트 ColdFusion 8 다운로드
- 21. ImagExpress 버전 8 (64 비트)
- 22. PHP - 8 비트 정수 읽기
- 23. 8 비트 어셈블리 부호있는 곱셈
- 24. 8 바이트의 비트 단위 변환
- 25. Tif 인덱싱 된 8 비트 색상을 32 비트 색상으로 변환
- 26. 이미지 비트 심도 값
- 27. HWND에서 비트 맵 가져 오기 및 저장 (8 비트, 4 비트, 픽셀 당 1 비트 - 검정 이미지)
- 28. iOS의 코어 그래픽에서 매우 큰 이미지 다루기
- 29. 계조 (픽셀 당 8 비트) I 들었던
- 30. 비트 맵 이미지 파일 크기
Core Image를 사용하면 GPU를 활용하므로 실제로 이렇게하는 것보다 훨씬 빠릅니다. Core Image를 사용하면 이미지 조작 코드를 쓸 필요가 없습니다. 항상 유용합니다 ... –
그러나 iOS 4 (또는 3)는 지원할 수 없습니다. – jrtc27
@Rob 1) GPU에 대한 좋은 지적이지만 모든 시나리오에서 확실히 빠르지는 않습니다. 2) CI는 어디에서 그리고 어떤 이유로 - CG (유사한 개념을 기반으로하는 예로서)가 GPU에서 많은 작업을 확실히 수행 하는지를 보장하지 않습니다. 3) 귀하의 예는 효과의 근사치입니다 - 그러나 그것은 좋게 보입니다. 4) iOS 5 이전에는 CI를 사용할 수 없습니다. 보너스) 이미지 조작 코드는 재미 있습니다 !!! ... 우리 중 일부는;) 그래서 나는 대답했을 때 다른 대답이 좋다고 결정했다. – justin