iphone - como posso obter a altura e a largura da uiimage

227

Da imagem da URL no Mail

Estou adicionando imagem ao modo de exibição de correio. Ele mostrará a imagem completa. Mas eu quero calcular, alterar proporcionalmente a altura e largura da imagem.

Como posso obter a altura e largura de UIImage?

Satyam
fonte

Respostas:

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

let widthInPoints = image.size.width
let widthInPixels = widthInPoints * image.scale
Jgubman
fonte
3
Pontos. Multiplique pela propriedade scale para obter os pixels.
rmooney
Foi estranho. Tirei uma foto pela câmera e supus sua altura> largura. Mas os pontos de largura eram 1280 e altura 720. O que há com eles?
Henry
1
ao carregar a imagem do rolo da câmera (via UIImagePickerController), a escala sempre parece ser 1.0, mas o tamanho da imagem não faz com que o tamanho da imagem não seja especificado em pixels. (na verdade, é metade do tamanho do pixel). -> como faço para obter o tamanho adequado pixel - não pode usar UIScreen.main.scale causa que é 3 no iPhone 6/7 Além disso, mas Image.Size permanece o mesmo
benrudhart
Parece que image.scale é apenas 1.0 por padrão, como mencionado no comentário anterior. Dito isto, estou obtendo valores como (3000, 2002) para uma imagem de simulador padrão, de modo que devem ser os pixels reais e não um valor de ponto, certo? Esta postagem tem alguns anos e talvez image.size tenha sido alterado para refletir o valor real do pixel.
Austin Whitelaw
35

Use a sizepropriedade na instância UIImage. Veja a documentação para mais detalhes.

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

CGFloat width = img.size.width;
CGFloat height = img.size.height;
MaxEcho
fonte
6

Algumas das respostas acima, não funcionam bem ao girar o dispositivo.

Experimentar:

CGRect imageContent = self.myUIImage.bounds;
CGFloat imageWidth = imageContent.size.width;
CGFloat imageHeight = imageContent.size.height;
Sinuhe Huidobro
fonte
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
fonte
0
    import func AVFoundation.AVMakeRect

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

    x = imageRect.minX

    y = imageRect.minY
ironRoei
fonte
É simples de usar da UIImage do que usar outra estrutura.
Satyam
0

Existem muitas soluções úteis por aí, mas não há maneira simplificada com a extensão. Aqui está o código para resolver o problema com uma extensão:

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
fonte
-2
let imageView: UIImageView = //this is your existing imageView

let imageViewHeight: CGFloat = imageView.frame.height

let imageViewWidth: CGFloat = imageView.frame.width
Wyatt
fonte
você mostra como obter o tamanho do imageView, não é o mesmo com o tamanho da imagem
ramzesenok 25/03