2010-02-21 4 views
0

Je souhaite redimensionner une image à une nouvelle taille en utilisant un paramètre: Largeur.détecter l'orientation de l'image avec ImageMagick

Si l'image est horizontale, la nouvelle taille sera: largeur = largeur, hauteur = proportionnelle à la largeur.

Et si l'image est verticale, la nouvelle taille sera: hauteur = largeur, largeur = proportionnelle à la hauteur.

Une idée de comment implémenter cela? J'utilise ImageMagick avec wrapper MagickNet.

+0

Le titre de la question est quelque peu incompatible avec le corps. Ce n'est pas vraiment la détection d'orientation, mais plutôt un problème de redimensionnement. Oui? –

+0

o.k.w: J'ai besoin des deux. Je veux redimensionner l'image après que je connaisse son orientation. –

+0

Je vois. J'ai mis à jour ma réponse, jetez un oeil. –

Répondre

2

De la référence d'utilisation est widthxwidth peut être 256x256

Le rapport d'aspect sera conservé et le redimensionnement sera effectué dans les limites de 256 x 256 pixels carrés.

Cité de la page ci-dessus:

Redimensionner s'adaptera l'image dans la taille demandée. Il ne remplit pas, la taille de boîte demandée .

+0

@ o.k.w: exactement ce que je cherche. Je vais le tester avec MagickNet. –

+0

Avez-vous une idée de comment l'implémenter dans .net? –

+0

@Menday, je vous recommande de poser une nouvelle question sur ImageMagick.NET :) –

1

Je ne sais pas exactement ce que vous voulez dire ici. Vous dites que vous voulez juste définir la largeur, mais dans le cas "vertical", vous définissez la hauteur à la largeur? Quoi qu'il en soit, si vous voulez redimensionner quelque chose en utilisant simplement la largeur, utilisez ce pseudo-code:

ratio = width/height 
newWidth = <the new width> 
newHeight = newWidth/ratio 

Si vous voulez redimensionner la plus longue taille à une valeur donnée, essayez ceci:

ratio = width/height 

if ratio > 1 // wider than it is tall 
    newWidth = <theValue> 
    newHeight = newWidth/ratio 

else   // taller than it is wide 
    newHeight = <theValue> 
    newWidth = newHeight * ratio 
+0

Je suppose que la 'largeur' est la limite/valeur la plus longue, donc c'est votre deuxième solution :) –

+0

Je voulais dire le second. Mais je n'ai pas les 'width' et' height'. J'ai le chemin de l'image, et les paramètres les plus longs de la cible. –