2015-12-08 9 views
0

У меня проблема с получением значения из измененного размера UIimage. Начальный размер изображения 500x500. метод я использую не может только тогда, когда изображение изменяется (даже одинакового размера)object-c получить значение пикселя из измененного размера

  1. Я использую ImageContext и drawInRect создавать новые изменения размера изображения.

  2. Я использую CFDataRef и CFDataGetBytePtr в другом методе, чтобы получить значения пикселей в x, y.

CFDataRef возвращает 1000000 для всех изображений по умолчанию. После изменения размера изображения это значение изменяется на @ 90240000. То же самое с CFDataGetBytePtr, который пуст после изменения размера изображения.

Теперь я подозреваю, что это имеет какое-то отношение к тому факту, что изменение размера изображения на самом деле является новым изображением, но я не могу быть уверенным, поэтому я бы очень признателен за любые объяснения или предложения относительно того, как я могу это разрешить.

Благодарим вас за то, что нашли время, чтобы проверить мой вопрос.

+0

Вы можете оставить комментарий, в который вы хотите изменить размер изображения? это может дать нам некоторые намеки –

+0

точно :) Вот оно: // изменить размер изображения + (UIImage *) imageWithImage: (UIImage *) изображение scaledToSize: (CGSize) NewSize { // UIGraphicsBeginImageContext (NewSize); 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

У меня есть аналогичная проблема, то есть я не могу получить правильное значение, используя CFDataGetBytePtr после изменения размера UIImage. В настоящее время я не понимаю причину, но другой способ получить ценность работы 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); 

 Смежные вопросы

  • Нет связанных вопросов^_^