Eu tenho batido meu rosto neste há literalmente dias agora e mesmo que eu sinta constantemente que estou à beira da revelação, simplesmente não consigo alcançar meu objetivo.
Pensei, antecipadamente nas fases conceituais do meu design, que seria uma questão trivial capturar uma imagem da câmera ou biblioteca do iPhone, reduzi-la até uma altura especificada, usando uma função equivalente à opção Aspect Fill de UIImageView (inteiramente no código) e, em seguida, corte qualquer coisa que não coubesse em um CGRect passado.
Obter a imagem original da câmera ou da biblioteca foi trivial. Estou chocado com o quão difícil os outros dois passos se mostraram.
A imagem em anexo mostra o que estou tentando alcançar. Alguém por favor teria a gentileza de segurar minha mão? Todo exemplo de código que encontrei até agora parece esmagar a imagem, ficar de cabeça para baixo, parecer uma porcaria, desenhar fora dos limites ou simplesmente não funcionar corretamente.
fonte
Respostas:
Eu precisava da mesma coisa - no meu caso, para escolher a dimensão que se encaixa uma vez dimensionada e, em seguida, cortar cada extremidade para ajustar o restante à largura. (Estou trabalhando na paisagem, por isso pode não ter notado deficiências no modo retrato.) Aqui está o meu código - faz parte de uma categoria na UIImage. O tamanho do destino no meu código é sempre definido como o tamanho da tela inteira do dispositivo.
fonte
Uma postagem mais antiga contém código para um método para redimensionar sua UIImage. A parcela relevante é a seguinte:
No que diz respeito ao corte, acredito que, se você alterar o método para usar um tamanho diferente para a escala e para o contexto, a imagem resultante deverá ser cortada nos limites do contexto.
fonte
originalImage
. Obrigado.UIGraphicsBeginImageContextWithOptions(newSize, 1.0f, 0.0f);
. (explicado aqui: stackoverflow.com/questions/4334233/… )Eu proponho este. Ela não é uma beleza? ;)
fonte
Há um ótimo código relacionado ao redimensionamento de imagens + várias outras operações. Encontrei este aqui ao tentar descobrir como redimensionar imagens ... http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
fonte
Aqui está. Este é perfeito ;-)
EDIT: veja o comentário abaixo - "Não funciona com certas imagens, falha com: CGContextSetInterpolationQuality: contexto inválido 0x0 erro"
fonte
Esta é uma versão da resposta de Jane Sales em Swift. Felicidades!
fonte
Modifiquei o Código de Brad Larson. O aspecto preencherá a imagem em um dado ret.
fonte
A versão do Xamarin.iOS para obter uma resposta aceita sobre como redimensionar e recortar o UIImage (preenchimento de aspecto) está abaixo
fonte
Eu converti o guia de Sam Wirch para rápido e funcionou bem para mim, embora haja alguns "squishing" muito leves na imagem final que não consegui resolver.
Se alguém quiser a versão objetiva c, está no site dele.
fonte
Descobri que o Swift 3 postado por Evgenii Kanvets não escala a imagem de maneira uniforme.
Aqui está minha versão do Swift 4 da função que não esmaga a imagem:
fonte
UIGraphicsBeginImageContextWithOptions
mas outros funcionaram perfeitamente. Obrigado!O seguinte código simples funcionou para mim.
fonte
UIImageView
objetos. No entanto, esta pergunta é sobre dimensionar oUIImage
próprio objeto.então você pode tirar capturas de tela da sua imagem dessa
fonte
Abaixo o exemplo do trabalho: Imagem esquerda - (imagem de origem); Imagem direita com escala x2
Se você quiser dimensionar a imagem, mas reter seu quadro (proporções), chame o método da seguinte maneira:
fonte
Essa questão parece ter sido resolvida, mas na minha busca por uma solução que eu pudesse entender mais facilmente (e escrita em Swift), cheguei a isso (também publicado em: Como cortar a UIImage? )
Eu queria poder cortar de uma região com base em uma proporção e dimensionar para um tamanho com base em uma extensão delimitadora externa. Aqui está a minha variação:
Achei algumas coisas confusas, as preocupações separadas de cortar e redimensionar. O corte é tratado com a origem do rect que você passa para drawInRect, e o dimensionamento é tratado pela parte do tamanho. No meu caso, eu precisava relacionar o tamanho do reto de corte na origem, ao meu ret de saída da mesma proporção. O fator de escala é então enviado / recebido, e isso precisa ser aplicado ao drawRect (passado para drawInRect).
Uma ressalva é que essa abordagem assume efetivamente que a imagem que você está desenhando é maior que o contexto da imagem. Não testei isso, mas acho que você pode usar esse código para lidar com o corte / zoom, mas definindo explicitamente o parâmetro de escala como o parâmetro de escala acima mencionado. Por padrão, o UIKit aplica um multiplicador com base na resolução da tela.
Por fim, deve-se notar que essa abordagem do UIKit é de nível superior às abordagens CoreGraphics / Quartz e Core Image e parece lidar com problemas de orientação da imagem. Também vale ressaltar que é bastante rápido, segundo o ImageIO, de acordo com este post aqui: http://nshipster.com/image-resizing/
fonte
Versão rápida:
fonte
Aqui está uma versão do Swift 3 do guia de Sam Wirch para o swift publicado por William T.
fonte