2012-02-02 5 views
6

저는 UIImage + Resize 카테고리를 보았습니다. 인기 있고 다양한 보간 설정이 있습니다. 나는 CG 방식과 CIFilter를 통해 스케일링을 시도했다. 그러나, 나는 초점이 약간 부드러운 것처럼 보이지 않고 톱니 모양의 인공물로 가득차있는 이미지를 축소 할 수 없다. 다른 솔루션이나 제 3 자 라이브러리가있어 매우 선명한 이미지를 얻을 수 있습니까?iOS에서 이미지의 크기를 줄이는 방법 (앤티 앨리어스가 아닌 소프트)

iPhone의 경우 사진 응용 프로그램의 크기를 줄이려고도 꼬아서도 선명하게 이미지가 표시되기 때문에 가능해야합니다.

답변

6

당신은 CG를 말했지만 당신의 접근 방식을 구체적으로 밝히지 않았습니다.

사용하여 도면 또는 비트 맵 컨텍스트 :

CGContextSetInterpolationQuality(gtx, kCGInterpolationHigh); 
CGContextSetShouldAntialias(gtx, true); << default varies by context type 
CGContextDrawImage(gtx, rect, image); 

및 귀하의 의견과 층을 다시 이미지 크기를 조정하지 있는지 확인하십시오. 나는 이것으로 좋은 결과를 얻었다. 다른보기가 사용자의보기 또는 컨텍스트에 영향을 줄 가능성이 있습니다. 보기에 좋지 않을 경우,보기/이미지가 왜곡되어 있는지 여부를 확인하고 온 전성을 검사하십시오.

비트 맵으로 그리는 경우 대상 치수로 비트 맵을 만든 다음 그 비트 맵을 그립니다.

이상적으로, 종횡비는 유지됩니다.

매우 CPU 집약적 일 수 있습니다. HQ에서 반복적으로 그리기/크기 조정은 많은 시간이 소요되므로 대신 크기가 조정 된 사본을 만들 수 있습니다 (CGBitmapContext 사용).

+0

나는 drawInRect 또는 drawAtPoint를 통해 UI 그래픽 컨텍스트와 드로잉을 사용하고 있습니다. 그러나, 당신은 내 코드를 다시 보게 만들었고, 사실 내 코드의 또 다른 측면으로 인해 실현되었습니다. – akaru

+0

예 - 그래픽 컨텍스트의 설정에 대해 명시하는 것이 좋습니다. 그래픽 컨텍스트의 설정과 그래픽 시스템의 다른 측면이 많이 다를 수 있기 때문입니다. – justin

0

이미지가 축소되면, 일부 선명을 적용하는 것은 좋은 생각이 종종 을 시도해야합니다.

iOS의 코어 이미지는 (아직) 샤프닝 필터 (CISharpenLuminance, CIUnsharpMask)를 구현하지 않으므로 직접 롤업해야합니다. 애플이 iOS에서도이 필터를 구현할 때까지 애플을 사로 잡는다.

그러나 Sharpen luminance와 Unsharp mask는 상당히 진보 된 필터이며, 이전 프로젝트에서는 간단한 3x3 커널조차도 분명히 눈에 띄고 만족스러운 결과를 산출한다는 것을 알았습니다.

따라서 픽셀 수준에서 작업 할 생각이라면 그래픽 컨텍스트에서 이미지 데이터를 가져올 수 있으며 비트 값을 R, G 및 B 값으로 마스크하고 1999와 같은 코드 그래픽을 마스크 할 수 있습니다. 바퀴를 다시 발명하는 것 같아.

아마 그 주변에 어떤 표준 그래픽 라이브러리,이 작업을 수행 할 수도 (ImageMagick이가?)

4

여기에 내가이 일을 쓴 루틴이있다. 약간의 소프트 포커스가 있지만 원본 이미지를 얼마나 멀리 스케일링 하느냐에 따라 다릅니다. 나는 스크린 샷 이미지를 프로그램 화하고있다.

- (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize { 

    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 
관련 문제