Estou fazendo um aplicativo para iOS, usando Swift e Parse.com
Estou tentando permitir que o usuário selecione uma imagem em um seletor de imagens e, em seguida, redimensione a imagem selecionada para 200x200 pixels antes de enviar para o meu back-end.
Parse.com tem um tutorial para um aplicativo de cópia do Instagram chamado "AnyPic" que fornece esse código para redimensionar imagens, mas está em Objective-C ....
// Resize the image to be square (what is shown in the preview)
UIImage *resizedImage = [anImage resizedImageWithContentMode:UIViewContentModeScaleAspectFit
bounds:CGSizeMake(560.0f, 560.0f)
interpolationQuality:kCGInterpolationHigh];
// Create a thumbnail and add a corner radius for use in table views
UIImage *thumbnailImage = [anImage thumbnailImage:86.0f
transparentBorder:0.0f
cornerRadius:10.0f
interpolationQuality:kCGInterpolationDefault];
Como eu criaria uma versão de 200x200px da imagem selecionada (para depois fazer o upload) em Swift?
E o que a função thumbnailImage está fazendo?
UIGraphicsBeginImageContextWithOptions
último parâmetro seja,0.0
pois ele usará a escala do dispositivo.Para Swift 4.0 e iOS 10
fonte
myImage.resizeImage(...)
.Como a resposta de @KiritModi é de 2015, esta é a versão do Swift 3.0:
fonte
Para o Swift 4, eu faria apenas uma extensão no UIImage com referência a si mesmo.
fonte
Também é possível usar AlamofireImage ( https://github.com/Alamofire/AlamofireImage )
A função do post anterior me deu um resultado embaçado.
fonte
Detalhes
Links
Solução
Uso
Resultado
fonte
Versão Swift 3 e estilo de extensão
Esta resposta vem de @Kirit Modi.
fonte
Swift 4, versão de extensão, SEM LINHA BRANCA NAS BORDAS.
Ninguém parece estar mencionando que se
image.draw()
for chamado com valores não inteiros, a imagem resultante pode mostrar um artefato de linha branca na borda direita ou inferior.fonte
Versão Swift 4
fonte
Para Swift 5.0 e iOS 12
usar:
fonte
Versão do Swift 4.2 da resposta @KiritModi
fonte
chamada do método resizeimage
método para redimensionar imagem
fonte
Solução Swift 4-
Use esta função
Chamando uma função: -
aqui 28,0 é o tamanho do pixel que você deseja definir
fonte
Aqui está um método geral (no Swift 5) para reduzir a escala de uma imagem para caber em um tamanho. A imagem resultante pode ter a mesma proporção da original ou pode ter o tamanho de destino com a imagem original centralizada nele. Se a imagem for menor que o tamanho de destino, ela não será redimensionada.
fonte
Você pode usar isso para ajustar a imagem no Swift 3 ;
Uso;
fonte
Aqui você tem duas funções simples de
UIImage
extensão:fonte
UIimage
.Jogando aqui minha versão da resposta aceita para funcionar bem com o Swift 5. Esta solução não força o desembrulhar a imagem resultante, tornando-a uma solução um pouco mais segura e mais limpa.
fonte
UIImage Extension Swift 5
Use: UIImage (). Resize (200, 300)
fonte
Todas as respostas listadas até agora parecem resultar em uma imagem de tamanho reduzido, porém o tamanho não é medido em pixels. Aqui está um Swift 5, redimensionamento baseado em pixels .
Uso:
fonte
O exemplo é para minimizar a imagem para 1024 e menos
func resizeImage (image: UIImage) -> UIImage {
fonte
SWIFT 5 com
newImage = UIImage(cgImage: cgImage)
fonte