Je suis perdu et j'ai besoin de direction.Rendu efficace de nombreuses images sur une toile unifiée
Nous essayons de rendre un tas de petites images (X) sur un seul canevas unifié en utilisant imagemagick.
Les différents X peuvent être l'un de cinq tailles différentes: 20x20, 40x40, 60x60, 80x80 ou 100x100 chacun. La largeur de la grande image est toujours définie sur 600, mais la hauteur peut être réglée au besoin.
Nous pouvons utiliser jusqu'à 10 ou 10 000 X à tout moment.
Actuellement, la preuve bare-bones du concept que nous travaillons avec va quelque chose comme:
images.each do |image|
image = Magick::Image.read("#{RAILS_ROOT}/public/images/#{image}").first
w = image.columns
h = image.rows
pixels = image.export_pixels(0, 0, w, h, "RGB")
img.import_pixels(x, y, w, h, "RGB", pixels)
x += w
end
... il est simple et stupide, mais il ne sortie une série d'images fusionnées en une seule. Presque là ;-)
Est-ce que quelqu'un sait d'un algorithme efficace avec lequel nous pouvons itérer plusieurs X et les placer côte à côte, en couvrant plusieurs lignes et en optimisant toujours l'espace? Le but ici est de créer une seule image sans espace blanc, construite par toutes les petites images.
Comme indiqué, j'aimerais tous les commentaires que vous pourriez avoir à ce sujet. Pointeurs? Des idées? Exemples?
Merci.
Merci pour votre réponse carlosdc! J'ai passé la matinée à essayer de trouver des implémentations de référence des méthodes que vous mentionnez en vain. Avez-vous quelque chose en tête? Merci encore. –
J'ai modifié ma réponse un peu. – carlosdc