iphone - comment obtenir la hauteur et la largeur de uiimage

227

À partir de l' image URL dans Mail

J'ajoute une image à la vue du courrier. Il montrera l'image complète. Mais je veux calculer, modifier proportionnellement la hauteur et la largeur de l'image.

Comment puis-je obtenir la hauteur et la largeur de UIImage?

Satyam
la source

Réponses:

424
let heightInPoints = image.size.height
let heightInPixels = heightInPoints * image.scale

let widthInPoints = image.size.width
let widthInPixels = widthInPoints * image.scale
Jgubman
la source
3
Points. Multipliez par la propriété scale pour obtenir les pixels.
rmooney
C'était étrange. J'ai pris une photo par appareil photo et supposé sa hauteur> largeur. Mais les points de largeur étaient 1280 et la hauteur 720. Quel est le problème avec eux?
Henry
1
lors du chargement de l'image à partir de la pellicule (via UIImagePickerController), l'échelle semble toujours être 1,0 mais l'image.size ne correspond pas à l'image.size n'est pas donnée en pixels. (c'est en fait la moitié de la taille des pixels). -> comment obtenir la bonne taille de pixel - ne peut pas utiliser UIScreen.main.scale car c'est 3 sur iPhone 6/7 Plus, mais image.size reste le même
benrudhart
Il semble que image.scale ne soit que de 1,0 par défaut, comme mentionné dans le commentaire précédent. Cela étant dit, j'obtiens des valeurs comme (3000, 2002) pour une image de simulateur par défaut, donc ce doit être les pixels réels et non une valeur en points, non? Ce message a quelques années, alors peut-être que image.size a changé pour refléter la valeur réelle des pixels.
Austin Whitelaw
35

Utilisez la sizepropriété sur l'instance UIImage. Voir la documentation pour plus de détails.

Anomie
la source
11
UIImage *img = [UIImage imageNamed:@"logo.png"];

CGFloat width = img.size.width;
CGFloat height = img.size.height;
MaxEcho
la source
6

Certaines des réponses ci-dessus, ne fonctionnent pas bien lors de la rotation de l'appareil.

Essayer:

CGRect imageContent = self.myUIImage.bounds;
CGFloat imageWidth = imageContent.size.width;
CGFloat imageHeight = imageContent.size.height;
Sinuhe Huidobro
la source
2
UIImageView *imageView = [[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"MyImage.png"]]autorelease];

NSLog(@"Size of my Image => %f, %f ", [[imageView image] size].width, [[imageView image] size].height) ;
Sayeed S. Alam
la source
0
    import func AVFoundation.AVMakeRect

    let imageRect = AVMakeRect(aspectRatio: self.image!.size, insideRect: self.bounds)

    x = imageRect.minX

    y = imageRect.minY
ironRoei
la source
C'est simple à utiliser depuis UIImage plutôt qu'avec un autre framework.
Satyam
0

Il existe de nombreuses solutions utiles, mais il n'y a pas de moyen simplifié avec l'extension. Voici le code pour résoudre le problème avec une extension:

extension UIImage {

    var getWidth: CGFloat {
        get {
            let width = self.size.width
            return width
        }
    }

    var getHeight: CGFloat {
        get {
            let height = self.size.height
            return height
        }
    }
}
Bruno Eigenmann
la source
-2
let imageView: UIImageView = //this is your existing imageView

let imageViewHeight: CGFloat = imageView.frame.height

let imageViewWidth: CGFloat = imageView.frame.width
Wyatt
la source
vous montrez comment obtenir la taille de l'imageView, ce n'est pas la même chose avec la taille de l'image
ramzesenok