Eu sei que posso redimensionar uma imagem com o ImageMagick usando -resize
ou -scale
, mas como posso remodelar uma imagem com o ImageMagick? Se eu usar -resize
ou -scale
:
magick image.png -resize 160x a.png
magick image.png -scale 160x b.png
Eu vou conseguir isso:
Mas eu quero ter exatamente o mesmo número de pixels com exatamente os mesmos valores e exatamente na mesma ordem, mas eles serão "refluidos" se for uma palavra em uma forma diferente.
Já descobri como fazer isso com Python Imaging Library e Numpy. Minha imagem inicial é 80x80 e fica assim:
from PIL import Image
import numpy as np
image = Image.open('a.png').convert('RGB')
npArray = np.array(image)
Image.fromarray(npArray.reshape(-1,160,3)).save('largeur160.png')
Image.fromarray(npArray.reshape(-1,40,3)).save('largeur40.png')
Image.fromarray(npArray.reshape(-1,10,3)).save('largeur10.png')
Eu recebo essas imagens com largura 160 e 40 e 10:
Pergunta legal! Basicamente, acho que você precisa organizar todos os pixels da sua imagem em uma longa linha e, em seguida, dividir a linha em pedaços da largura desejada. Farei isso em etapas - vá até o final se quiser apenas a resposta!
Primeiro, corte sua imagem em linhas de 1px de altura, o que resulta em 80 linhas de pixels, cada linha tendo 80x1:
Agora, concatene todas essas linhas da esquerda para a direita para fornecer todos os seus pixels em uma longa linha de 6400x1:
Agora divida essa linha longa em linhas com a nova largura desejada, para obter 40 linhas de 160x1:
Agora concatene essas linhas de cima para baixo para obter seu resultado:
Altere
160x
para40x
e10x
para suas outras larguras.