J'ai un crash qui ne se produit que sur 4S (pas sur 3GS). Je doute que ce soit à cause de @ 2x. Fondamentalement, je reçois des octets bruts d'image et de manipuler. Voici la question que j'ai.
Je charge une image comme mentionné dans l'exemple de code ci-dessous. À la fin, uiWidth devrait être 2000 et cgwidth devrait être 2000. Correct? (Serait-il toujours vrai si l'image est chargée à partir de rouleaux de camera? Ou son autoscaling et uiWidth sera 4000?)
//test.jpg is 2000x 1500 pixels. NSSsortingng *fileName = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"jpg"]; UIImage *image = [UIImage imageWithContentsOfFile:fileName]; int uiWidth = image.size.width; CGImageRef cgimg = image.CGImage; int cgWidth = CGImageGetWidth(cgimg);
Merci de votre aide.
La size
indiquée par UIImage
est en points, pas en pixels. Vous devez prendre en count la propriété scale
d' UIImage
.
En d'autres termes, si test.jpg
est 1000×1000 alors UIImage.size
rapportera 1000×1000. Si [email protected]
est 2000×2000 alors UIImage.size
indiquera également 1000×1000. Mais dans le 2ème cas, UIImage.scale
rapportera 2.
CGImageGetWidth
indique sa largeur en pixels et non en points.