2010-05-27 4 views
1

http://i.imgur.com/foT9u.jpgJ'ai besoin d'aide rognage d'une image en PHP (GD)

En utilisant cette image comme un exemple, voici ce que je dois faire:

  • Crop le carré bleu pour avoir le même rapport proportionnel De ce fait, je devrais alors pouvoir redimensionner le carré bleu pour l'insérer dans le carré noir sans l'étirer - il conservera ses proportions.

Remarque: Le carré bleu doit être recadré «par le centre». Le centre d'origine doit rester le centre après la récolte (il ne peut pas être recadré en haut à gauche, par exemple).

Voici ce que je pense qui doit être fait (en utilisant le, paysage, carré bleu comme l'exemple):

  • Calculez la différence entre les carrés noirs largeur et la hauteur
  • Figure la différence entre les carrés bleus largeur et hauteur
  • Cela devrait me dire combien de recadrer le carré bleu par et avec combien d'un «décalage supérieur»
  • Une fois qu'il est recadré pour s'adapter aux proportions des carrés noirs, il peut alors être redimensionné

J'ai été déconner avec le code similaire à:

if (BLACK_WIDTH > BLACK_HEIGHT) 
{ 
    $diffHeight = BLACK_WIDTH - BLACK_HEIGHT; 
    $newHeight = $blue_Height - $blue_Height; 

    echo $newHeight; 
} 

Et en utilisant Photoshop pour essayer d'obtenir une idée de la façon dont cela devrait être fait, mais il continue à échouer>. <

Comment dois-je procéder? Comment est-ce que je peux déterminer combien de recadrer par (selon que le carré bleu est paysage ou portrait)? Comment puis-je obtenir le décalage pour conserver le centre des carrés bleus?

EDIT: Typo

Répondre

1
  • Trouver la largeur carré noir que vous avez voulu culture. Exemple de largeur souhaitée => $ x
  • Trouve le rapport ($ r) du carré bleu. Donc, après redimensionnez vous obtiendrez de nouvelles width => $ y
  • Créer une fonction, par exemple la fonction deceaseSize, la fonction va faire quelque chose comme une boucle, en boucle jusqu'à ce que le $ x == $ y

  • Désolé, ignorer ma réponse.

+0

Je ne peux pas supprimer ma propre réponse. –

+0

N'y a-t-il pas de meilleures options que de faire une boucle? Que faire si je commence avec une grande image que je veux réduire à quelque chose de beaucoup plus petit. Boucler pour réduire l'image de 1 pixel à la fois pourrait causer des problèmes de vitesse: / – dave