Recadrage convivial des miniatures de publication?

32

Est-il possible de laisser mes utilisateurs définir la zone de recadrage d'une vignette de publication? Les vignettes sont toujours des pièces jointes existantes, je préférerais ne pas créer de pièce jointe supplémentaire par vignette.

Les miniatures des publications doivent faire 200 x 100 pixels et provenir d’une des images utilisées dans la publication. Ainsi, dans mon monde idéal, lorsque vous cliquez sur le lien "Définir l'image sélectionnée", vous obtenez une vue d'ensemble des images déjà incluses. Lorsque vous cliquez sur l'une de ces images, vous pouvez définir vous-même la zone de recadrage (en la déplaçant ou en la redimensionnant, le format d'image 2x1). Lorsque vous cliquez sur "OK", la nouvelle vignette de publication est enregistrée avec la pièce jointe d'origine (dans le _wp_attachment_metadata['sizes']['post-thumbnail']champ de métadonnées, par exemple), et non comme une nouvelle pièce jointe. L'utilisation d'une image déjà utilisée en tant que vignette d'un message pour un autre message ne devrait pas être autorisée, ou du moins donner un avertissement.

Je pense que l'éditeur d'images inclus ne répondra pas à mes besoins, car vous pouvez choisir de modifier toutes les versions de l'image, ou la miniature normale, mais pas uniquement la miniature de publication. Je trouve également un peu déroutant de savoir quelles versions je suis en train d’éditer, je pense donc que mes utilisateurs auront encore plus de problèmes avec cela.

Y at-il un plugin qui fait ce que je veux, ou que je peux facilement étendre à mes besoins?

Mise à jour: exemple d'interface utilisateur

J'aime beaucoup l'interface du sélecteur d'images du carnet d'adresses Mac OS X: vous sélectionnez une image et redimensionnez un coupe-vignettes à taux fixe via un curseur. Vous pouvez également faire glisser l'image de base autour. Vous pouvez étendre cette idée à plusieurs tailles d’image (par exemple, j’en ai une post-thumbnailet elle post-thumbnail-1/2est deux fois plus petite). Laissez l'utilisateur sélectionner les tailles qu'il édite maintenant avec des cases à cocher et dessinez les rectangles de rognage appropriés à l'écran.

Le gestionnaire d'images du carnet d'adresses en action

Jan Fabry
la source
1
@ Jan Fabry - Mon tout premier projet WordPress payant était un plugin pour le rognage des images, avant que le rognage ne vienne dans WordPress. C'était très différent de ce que vous demandiez ou je l'inclurais comme réponse. Mais ce que vous voulez ne devrait pas être trop difficile à écrire si vous êtes motivé ...
MikeSchinkel
1
@ Mike: Je l'ai vu une fois sur votre site Web et j'espérais qu'il serait disponible quelque part. Même s'il ne coche pas tous les éléments de ma liste de souhaits (étendue), cela pourrait être un bon début.
Jan Fabry
@ Mike - Je serais également très intéressé de revoir tout code que vous pourriez avoir créé ou modifié en rapport avec le rognage d'image. Je cherchais désespérément à ajouter jcrop à une métabox personnalisée, ce qui permettrait d'ajouter et de rogner des images tout en utilisant la galerie de médias wordpress intégrée.
NetConstructor.com
Hey @Jan Fabry et @ NetConstructor.com - Je viens de réviser le code et puisqu'il s'agissait de mon premier plugin pour WP, je suis trop embarrassé pour le publier, il est si mauvais. J'adorerais travailler sur une nouvelle solution pour la publication ici, mais cela pourrait prendre un certain temps ...
MikeSchinkel
Ne soyez pas timide Mike, l'ancien code est toujours mauvais aux yeux de l'écrivain. C'est juste des progrès :). @Jan - dans votre exemple d'interface utilisateur, il me semble que la taille de la vignette est en quelque sorte prédéfinie. Pouvez-vous en dire plus à ce sujet?
hakre

Réponses:

11

Le code est toujours un gâchis, mais il semble fonctionner, même sous IE 8. Je prévois de le publier dans le référentiel, mais vous pouvez jouer avec ma version actuelle . Pour y accéder, vous cliquez sur le bouton "Modifier l'image" lors de l'ajout ou de la modification d'une image. Il remplace l'éditeur d'image habituel (il est très difficile de les combiner). Étant donné que la majeure partie de la zone d'administration utilise la vignette standard et que ma version actuelle modifie la vignette de la publication, il peut sembler que le code n'ait aucun effet, mais essayez-le en affichant une vignette de publication et vous devriez la voir changer.

Ce plugin nécessite mon outil de redimensionnement d' image à la demande , qui est également toujours un désordre, pour effectuer le redimensionnement réel.

Exemple d'image dans le recadrage

Jan Fabry
la source
Le code est-il prêt à être publié? peut-être github-il? Je meurs d'envie d'intégrer de telles fonctionnalités dans ma chaudière
Mild Fuzz
Je suis aussi très intéressé par quoi / comment vous avez fait ça! S'il vous plaît partagez le code. Votre code fonctionne-t-il avec la médiathèque par défaut wordpress et vous permet-il de créer une simple metabox sur l'écran de post-édition où vous pouvez appeler une image spécifique ET la copier uniquement pour une taille spécifique, telle que "new_thumb" définie? via quelque chose comme add_image_size ('new_thumb', 200, 100, true) ;? L'idéal serait d'avoir quelque chose qui ressemble au créateur d'image en-tête avec la possibilité de changer chaque taille d'image définie en fonction de métaboxes individuels pour chaque taille définie.
NetConstructor.com
@JanFabry avez-vous publié ce code en tant que plugin? J'aimerais le recommander à quelqu'un qui a besoin de cette fonctionnalité!
Chip Bennett
@ jan-fabry Comment cette fonction est-elle allée? Un succès?
Steven
4

Votre meilleur pari est d’utiliser un recadrage d’images basé sur javascript puis php combiné avec ImageMagick ou Image GD.

Cela devrait être écrit dans vos fonctions ou sous forme de plug-in, car je ne connais aucun plug-in standard dans WordPress, ce qui est surprenant.

Il existe une culture YUI avec l'option de sauvegarde basée sur php http://developer.yahoo.com/yui/examples/imagecropper/conn_crop.html

Voici un tutoriel différent sur la façon d'utiliser un cropper jquery avec php
http://www.webmotionuk.co.uk/php-jquery-image-upload-and-crop/

Une troisième option très similaire au lien ci-dessus utilisant le même système de découpe jQuery mais un code différent. http://www.leonkessler.com/blog/?p=132

Voici un autre fichier utilisant jcrop avec jquery, http://www.talkincode.com/jcrop-extension-implementation-in-php-932.html

Qui est partant pour un nouveau plug-in, ce serait sûrement populaire :)

Wyck
la source
Il existe déjà du code de recadrage d'images (HTML, JS et PHP) dans WordPress Core. Je pense qu'un bon plugin réutiliserait cela. Ce n'est pas une nécessité, juste de le dire. Vous avez tout à fait raison de dire que l'exemple d'interface utilisateur créé par Jan a besoin de quelque chose comme ça.
hakre
@hakre, le dernier lien auquel Wyck est lié est jcrop, qui a été intégré au noyau wp dès la 2.8 . Je me souviens de l'avoir lu à ce moment-là, mais je ne trouve aucune information à ce sujet réellement utilisée autre qu'un plugin dans le référentiel qui, selon tous les comptes, est cassé.
Mat
@matt: si elle était intégrée dans le noyau (je ne connais pas tous les détails concernant l'interface utilisateur de découpe dans le noyau actuellement), je suppose qu'elle est utilisée pour la fonctionnalité d'interface utilisateur d'image de base. Cette fonctionnalité n'est pas disponible tout le temps, mais uniquement si certaines bibliothèques d'images PHP ou système sont disponibles. Désolé de ne pas être aussi spécifique, mais c'est juste que je n'ai pas encore abordé l'implémentation principale. Mais je sais qu'il y en a un;)
hakre
1

En supposant que vous ayez déjà ajouté le support pour les post-vignettes, car vous parlez de l'option "Image en vedette".

Si tel est le cas, vous avez la possibilité d’ajouter une nouvelle taille d’image au tableau de téléchargement. Donc, par défaut, vous avez miniature, moyenne, grande. Dans le code suivant, cela ajoute une quatrième image à cet assortiment, en fonction de la taille souhaitée. Ce morceau de code serait ajouté à votre fichier functions.php.

add_image_size( 'new_thumb', 200, 100, true );

"new-thumb" = le nom de la nouvelle image personnalisée
"200" = width
"100" = height
"true" = option de rognage difficile. Cela forcera une image à être recadrée à la largeur / hauteur définie. Sans cela, les échelles ne sont que proportionnelles.

Maintenant, pour afficher la nouvelle vignette sur une page ou un tableau, vous devez insérer ce qui suit dans votre code HTML

<?php the_post_thumbnail('new_thumb'); ?>

la source
@ cnix: Merci pour cette réponse, mais ce n'est pas ce que je recherche. Je veux un moyen pour l'utilisateur final de définir la zone qui doit être recadrée, pas moi en tant que concepteur du site. La zone peut donc varier d'une image à l'autre.
Jan Fabry
1

Vous voudrez peut-être utiliser CSS pour avoir une grande flexibilité, réparer les vignettes dans votre thème (si vous le souhaitez) et éviter l'encombrement des fichiers:

http://www.seifi.org/css/creating-thumbnails-using-the-css-clip-property.html

N'oubliez pas que toute l'image sera chargée, aussi n'utilisez pas vos originaux de 3 Mo pour cela.

Mise à jour selon la demande de Jan: Si vous souhaitez un découpage dynamique, tenez compte des points suivants:

  • Pour utilisateur = administrateur, créez CSS via PHP; vous pouvez simplement vous connecter au php qui lit les paramètres appropriés et ajuster les paramètres de découpage en conséquence.
  • Pour utilisateur = visiteur, utilisez JavaScript pour modifier les paramètres de découpage dans l'attribut style de l'image.
  • En tant que solution moins invasive, envisagez de créer un shortcode (via l'excellent plugin Shortcode Exec PHP) comme [thumb w = ?? h = ??] url [/ thumb] que vous pouvez traduire en balise HTML appropriée avec CSS en ligne.
Raphaël
la source
En effet, vous pouvez effectuer le recadrage via CSS pour éviter d’avoir plusieurs tailles, mais comment laisser l’utilisateur (auteur de la publication) définir la zone de recadrage à afficher?
Jan Fabry
S'il vous plaît voir les modifications ci-dessus.
Raphaël
Merci pour la clarification. Cela suppose que l'utilisateur connaisse l'emplacement des pixels de la zone de recadrage souhaitée? Je cherche en fait un moyen plus graphique (comme l'éditeur d'image actuel, mais ciblé pour publier des vignettes et non des vignettes régulières).
Jan Fabry
J'espère que vous avez l'intention que ce soit un plugin, pas un bidouillage. Vous pouvez fournir certaines options par défaut qui devraient suffire dans la plupart des cas: angles, centre, centrés sur les arêtes, etc. (tous facilement calculés). Je m'abstiendrais d'offrir des entrées gratuites car les gens peuvent gâcher le flux du site s'ils entraient dans la merde. Proposer une définition graphique du clip (voir Zenphoto pour la mise en œuvre) convient, mais les principes d'utilisation des valeurs, quelle que soit leur valeur, restent les mêmes. il vous suffit de construire l'interface graphique. Ceci je ne peux pas vous aider avec.
Raphaël,
1

Il existe un plugin plus ancien appelé WP Post Thumbnail que nous utilisons parfois. Ce n'est pas parfait, et il y a quelques bugs mineurs avec la dernière version de WP (elle n'a pas été mise à jour depuis 2008, donc ce n'est pas nécessairement fiable). http://wordpress.org/extend/plugins/wp-post-thumbnail/

Gabrielk
la source
1

Je crois que vous recherchez ceci: http://wordpress.org/support/topic/scissors-for-wordpress-29-also-works-on-30-hurray

Je n'ai pas essayé cela, mais il devrait vous offrir la fonctionnalité que vous recherchez.

La page du plugin d'origine ici. http://wordpress.org/extend/plugins/scissors/

J'ai besoin de ça pour un projet sur lequel je travaille aussi.

tomcat23
la source
Merci pour la suggestion. J'ai examiné les ciseaux (et je savais que quelqu'un l'avait mis à niveau vers la version 3.0), mais je pense que c'est trop flexible pour ce que je veux: un rogneur capable de rogner à une taille prédéfinie. Les ciseaux peuvent faire beaucoup plus, et pourraient donc dérouter mes utilisateurs finaux.
Jan Fabry
1

Je pense que la solution ultime à ce problème serait de modifier le plugin de http://www.seoadsensethemes.com/wordpress-wp-post-thumbnail-plugin/

et personnalisez-le de sorte que toutes les tailles d'image personnalisées définies dans votre fichier functions.php (using add_image_size( 'new_thumb', 200, 100, true );) soient automatiquement utilisées, puis obtenez le code pour remplacer (ou étendre) le lien "modifier" lorsque vous souhaitez modifier une image.

En utilisant cette approche, wordpress peut continuer à créer ses tailles d'image applicables comme d'habitude, mais si vous souhaitez modifier spécifiquement la zone recadrée d'une image spécifique, vous avez la possibilité de le faire, ce qui remplacerait à son tour l'image générée automatiquement pour cette taille. Hmmm ... même si cela semble déroutant de le lire, c'est exactement ce qui me manque.

Actuellement, je pense que le plug-in enregistre ces tailles d'image personnalisées dans un champ personnalisé au sein d'un message au lieu d'un message pour une image applicable.

NetConstructor.com
la source