2013-01-03 3 views
0

CATILEDLayer를 사용하여 iOS 장치에 거대한 PNG 이미지를 표시하려고합니다. 이 작업을 수행하려면 큰 이미지를 클라이언트에서 100 %, 50 %, 25 % 및 12.5 %의 타일로 분할해야합니다 (서버 측 타일을 만드는 것은 옵션이 아닙니다).대형 PNG 타일 생성

libjpeg-turbo와 같은 라이브러리가 작동하는 것을 볼 수 있습니다. 그러나 이것들은 JPEG 용이며 PNG로 작업해야합니다.

누구든지 기기에서 대형 PNG (~ 20Mb)를 가져 와서 타일을 생성 할 수있는 방법을 알고 있습니까?

모든 의견이나 제안을 보내 주시면 감사하겠습니다.

감사합니다.

답변

1

당신이 사용할 수있는 내장 된 코어 그래픽 CGDataProviderCreateWithFilename 및 CGImageCreateWithPNGDataProvider의 API 이미지를 열려면 다음과 같은 일을 수행하여 타일의 각을 만들 : 당신은 또한 관련 예제를보고 할 수 있습니다

const CGSize tileSize = CGSizeMake(256, 256); 
const CGPoint tileOrigin = ...; // Calculate using current column, row, and tile size. 
const CGRect tileFrame = CGRectMake(-tileOrigin.x, -tileOrigin.y, imageSize.width, imageSize.height); 

UIGraphicsBeginImageContextWithOptions(tileSize, YES, 1); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextDrawImage(context, tileFrame, image.CGImage); 

UIImage *tileImage = UIGraphicsGetImageFromCurrentImageContext(); 
[UIImagePNGRepresentation(tileImage) writeToFile:tilePath atomically:YES]; 
UIGraphicsEndImageContext(); 

UIScrollView 클래스 참조에서 참조되는 프로젝트 (Large Image Downsizing 및 PhotoScroller)가 있습니다.

+0

이것은 실제로 작동합니다! 큰 이미지에서는 속도가 매우 느리지 만 이미지를 위로 나눌 수는 있습니다. – miwic

관련 문제