2015-12-08 1 views
0

J'ai un problème avec l'obtention de la valeur d'une image UI redimensionnée. La taille initiale de l'image est 500x500. La méthode que je utilise échoue uniquement lorsque l'image est redimensionnée (même taille égale)objectif-c obtenir la valeur du pixel à partir de l'image redimensionnée

  1. J'utilise ImageContext et drawInRect pour créer une nouvelle image redimensionnée. J'utilise CFDataRef et CFDataGetBytePtr dans une autre méthode pour obtenir des valeurs de pixel à x, y.

CFDataRef renvoie @ 1000000 pour toutes les images par défaut. Une fois l'image redimensionnée, cette valeur est remplacée par @ 90240000. Idem avec CFDataGetBytePtr qui est vide après le redimensionnement de l'image. Maintenant je soupçonne que cela a quelque chose à voir avec le fait que l'image redimensionnée est en fait une nouvelle image, mais je ne peux pas être sûr que j'apprécierais vraiment des explications ou des suggestions sur la façon dont je peux résoudre ce problème.

Merci d'avoir pris le temps de vérifier ma question.

+0

pouvez-vous poster le code où vous redimensionnez l'image? il pourrait nous donner quelques conseils –

+0

Bien sûr :) Ici, il est: // Redimensionner les images + (UIImage *) imageWithImage: (UIImage *) l'image 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

vous pouvez essayer cette catégorie et voir si cela améliore quelque chose http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/. Source: http: //stackoverflow.com/questions/2658738/the-simplest-way-to-resize-an-uiimage. Aussi, faites-vous cela sur le fil principal? –

Répondre

0

J'ai un problème similaire, c'est-à-dire que je ne peux pas obtenir la valeur correcte en utilisant CFDataGetBytePtr après avoir redimensionné le UIImage. Je ne comprends pas la raison pour le moment, mais une autre façon d'obtenir la valeur de UIImage fonctionne. Code comme suit:

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);