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.
let heightInPoints = image.size.height
let heightInPixels = heightInPoints * image.scale
let widthInPoints = image.size.width
let widthInPixels = widthInPoints * image.scale
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.
let imageView:UIImageView=//this is your existing imageViewlet imageViewHeight:CGFloat= imageView.frame.height
let imageViewWidth:CGFloat= imageView.frame.width
Respostas:
fonte
Use a
size
propriedade na instância UIImage. Veja a documentação para mais detalhes.fonte
fonte
Algumas das respostas acima, não funcionam bem ao girar o dispositivo.
Experimentar:
fonte
fonte
fonte
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:
fonte
fonte