2013-01-03 107 views
0

我正在尋找使用CATiledLayer在iOS設備上顯示巨大的PNG圖像。爲了達到這個目的,我需要將較大的圖片分割爲客戶端上的圖塊(100%,50%,25%和12.5%)(在服務器端創建圖塊不是選項)。從一個大的PNG生成瓷磚

我可以看到,有libjpeg-turbo等庫可以工作,但是這些都是用於JPEG,我需要使用PNG。

有誰知道一種方法,我可以採取一個大的PNG(〜20​​Mb),並在設備上從它生成瓷磚?

任何指針或建議,將不勝感激!

謝謝!

回答

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類參考下引用的項目(大圖縮小和PhotoScroller)。

+0

這實際上工作!大圖像速度非常慢,但至少可以分割圖像。 – miwic