Eu vi em muitos posts para redimensionar a imagem mantendo a proporção. Essas funções usam os pontos fixos (Largura e Altura) para RECT durante o redimensionamento. Mas, no meu projeto, preciso redimensionar a exibição com base apenas na largura. A altura deve ser obtida automaticamente com base na proporção. alguém me ajuda a conseguir isso.
iphone
objective-c
ios
aspect-ratio
fixed-width
Jasmim
fonte
fonte
newWidth
variável aqui, porém, já éi_width
.UIGraphicsBeginImageContextWithOptions(CGSizeMake(newWidth, newHeight), NO, 0);
um pouco entãoUIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));
Se você não souber se a imagem será retrato ou paisagem (por exemplo, o usuário tira uma foto com a câmera), criei outro método que utiliza parâmetros máximos de largura e altura.
Digamos que você tenha uma
UIImage *myLargeImage
proporção de 4: 3.A UIImage redimensionada será 1024x768 se paisagem; 768x1024 se retrato. Este método também irá gerar imagens de alta resolução para a exibição da retina.
fonte
min(ratioX, ratioY)
. Caso contrário, se a largura for maior, pode não caber na altura máxima.Melhor resposta que o Maverick 1st foi traduzido corretamente para Swift (trabalhando com o mais recente swift 3 ):
fonte
obrigado @ Maverick1st o algoritmo, eu o implementei
Swift
, no meu caso height é o parâmetro de entradafonte
Este método é uma categoria no UIImage. É dimensionado para caber em algumas linhas de código usando o AVFoundation. Não esqueça de importar
#import <AVFoundation/AVFoundation.h>
.fonte
Versão Swift 5 do tamanho do aspecto , com base na resposta de @ János
Usa a
UIGraphicsImageRenderer
API moderna , portanto,UIImage
é garantido que um válido retorne.Você pode usar isso em conjunto com um recurso de imagem PDF (baseado em vetor), para preservar a qualidade em qualquer tamanho de renderização.
fonte
A maneira mais simples é definir o quadro
UIImageView
e definircontentMode
uma das opções de redimensionamento.O código fica assim - Isso pode ser usado como um método utilitário -
fonte
Programaticamente:
Storyboard:
fonte
Bem, temos algumas boas respostas aqui para redimensionar a imagem, mas apenas modifico conforme minha necessidade. espero que isso ajude alguém como eu.
Minha exigência era
Você também pode verificar isso para calcular o redimensionamento.
fonte
Basta importar o AVFoundation e usar
AVMakeRectWithAspectRatioInsideRect(CGRectCurrentSize, CGRectMake(0, 0, YOUR_WIDTH, CGFLOAT_MAX)
fonte
Para melhorar a resposta de Ryan:
fonte
Quando a escala é definida como 0,0, é usado o fator de escala da tela principal, que para os displays Retina é 2.0 ou superior (3.0 no iPhone 6 Plus).
fonte
Ryan's Solution @Ryan em código rápido
usar:
fonte
No Swift 3, existem algumas mudanças. Aqui está uma extensão para UIImage:
fonte
Zeeshan Tufail e Womble respondem no Swift 5 com pequenas melhorias. Aqui temos extensão com 2 funções para dimensionar a imagem para
maxLength
qualquer dimensão e compactação jpeg.fonte
Este foi perfeito para mim. Mantém a proporção e leva a
maxLength
. Largura ou altura não será superior amaxLength
fonte
Calcula a melhor altura da imagem para a largura disponível.
fonte
Eu resolvi isso de uma maneira muito mais simples
O multiplicador da escala definirá a escaldadura da imagem, mais o multiplicador menor a imagem. para que você possa verificar o que se ajusta à sua tela.
Ou você também pode obter o multiplicador dividindo largura de imagem / largura de tela.
fonte