2015-12-08 62 views
0

從調整大小的UIimage獲取值時遇到問題。 初始圖像大小爲500x500。只有當圖像被調整大小(甚至到相同大小)objective-c從調整大小的圖像中獲取像素值

  1. 我使用ImageContext和drawInRect來創建新的調整後的圖像 我使用的方法將失敗。

  2. 我在另一種方法中使用CFDataRef和CFDataGetBytePtr來獲取x,y處的像素值。

對於所有默認圖像,CFDataRef返回@ 1000000。一旦圖像被調整大小,該值將更改爲@ 90240000。調整圖像大小後,CFDataGetBytePtr爲空。

現在我懷疑它與調整圖像實際上是一個新圖像的事實有關,但我不能確定,所以我非常感謝任何解釋或建議,我如何解決這個問題。

謝謝您花時間查看我的問題。

+0

你可以發佈代碼調整圖像的大小嗎?它可能會給我們一些提示 –

+0

當然:)這是: //調整圖像 +(UIImage的*)imageWithImage:(*的UIImage)圖像scaledToSize:(CGSize)新尺寸{// UIGraphicsBeginImageContext(新尺寸); UIGraphicsBeginImageContextWithOptions(newSize,NO,0.0); [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; } – msavic

+0

你可以嘗試這個類別,看看它是否改善了一些東西http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/。來源:http://stackoverflow.com/questions/2658738/the-simplest-way-to-resize-an-uiimage。另外,你是否在主線程上執行此操作? –

回答

0

我有一個類似的問題,那就是我無法在調整UIImage大小後使用CFDataGetBytePtr得到正確的值。目前我沒有理由,但獲得UIImage價值的另一種方法是可行的。代碼如下:

size_t width = CGImageGetWidth(img); 
size_t height = CGImageGetHeight(img); 


size_t rowByteSize = width * 4; 
unsigned char * data = new unsigned char[height * rowByteSize]; 

CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); 
CGContextRef context = CGBitmapContextCreate(data, width, height, 8, rowByteSize, 
              colorSpaceRef, 
              kCGImageAlphaPremultipliedLast); 
CGContextSetBlendMode(context, kCGBlendModeCopy); 
CGContextDrawImage(context, CGRectMake(0.0, 0.0, width, height), img); 
CGContextRelease(context); 

CGColorSpaceRelease(colorSpaceRef);