{"id":230552,"date":"2022-12-02T18:01:00","date_gmt":"2022-12-02T15:01:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230552"},"modified":"2022-11-09T22:55:34","modified_gmt":"2022-11-09T19:55:34","slug":"redimensionner-les-images-par-programmation-dans-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/redimensionner-les-images-par-programmation-dans-wordpress\/","title":{"rendered":"Redimensionner les images par programmation dans WordPress"},"content":{"rendered":"\n<p>Si vous avez d\u00e9j\u00e0 d\u00fb redimensionner des images par programme dans WordPress, vous avez peut-\u00eatre rencontr\u00e9 la fonction <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/image_resize\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">image_resize<\/a><\/strong>.<\/p>\n<p>De plus, vous savez peut-\u00eatre qu&rsquo;il est obsol\u00e8te (\u00e9tant donn\u00e9 que cela appara\u00eet en haut de l&rsquo;\u00e9cran) :<\/p>\n<blockquote>\n<p>Cette fonction est obsol\u00e8te. Utilisez <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_get_image_editor\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_get_image_editor()<\/a><\/strong> \u00e0 la place.<\/p>\n<\/blockquote>\n<p>Et avec sa d\u00e9pr\u00e9ciation, comme c&rsquo;est le cas de tous ceux qui font du bon travail en d\u00e9pr\u00e9ciant les fonctionnalit\u00e9s, ce n&rsquo;est pas sans son remplacement.<\/p>\n<p>Dans ce cas, nous parlons de l&rsquo;\u00e9diteur d&rsquo;images WP. Il s&rsquo;agit d&rsquo;une classe dans WordPress que nous pouvons utiliser pour effectuer les m\u00eames op\u00e9rations de redimensionnement des images par programme que nous pouvions autrefois avec la fonction d&rsquo;origine.<\/p>\n<p>Pour \u00eatre clair, cet article particulier n&rsquo;est pas un didacticiel complet sur l&rsquo;utilisation du fichier <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_image_editor\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\"><code>WP_Image_Editor<\/code><\/a><\/strong>.<\/p>\n<\/p>\n<p>Au lieu de cela, il s&rsquo;agit d&rsquo;un guide simple sur la fa\u00e7on de l&rsquo;utiliser pour redimensionner les images \u00e0 la place d&rsquo;une fonction obsol\u00e8te, ainsi que de quelques explications sur la fa\u00e7on de g\u00e9rer les cas o\u00f9 il peut y avoir des erreurs.<\/p>\n<h3>Trouver l&rsquo;image \u00e0 utiliser<\/h3>\n<p>Selon ce que vous faites, vous pourrez peut-\u00eatre r\u00e9cup\u00e9rer le nom de fichier de l&rsquo;image \u00e0 partir de WordPress lui-m\u00eame ; cependant, pour cet exemple, je vais simplement coder en dur le chemin d&rsquo;acc\u00e8s \u00e0 un fichier.<\/p>\n<p>C&rsquo;est le moyen le plus simple d&rsquo;expliquer comment utiliser la classe plut\u00f4t que de partir sur une tangente pour savoir comment r\u00e9cup\u00e9rer par programme une image, obtenir son chemin, l&rsquo;envoyer \u00e0 la classe de l&rsquo;\u00e9diteur, etc.<\/p>\n<p>Supposons donc que le chemin donn\u00e9 \u00e0 l&rsquo;image <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/96fa8bb3af0ee6fd821b3899e82d5fdb#file-00-filename-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ressemble \u00e0 ceci\u00a0:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n$filename = '\/Users\/tommcfarlin\/Projects\/acme\/wp-content\/uploads\/2018\/06\/original-image.jpg';\nif (!file_exists($filename)) {\n  return;\n}<\/code><\/pre>\n<p>En utilisant cela, nous le stockerons dans une variable que nous pourrons transmettre \u00e0 une autre fonction au cas o\u00f9 nous voudrions op\u00e9rer plusieurs fois sur le fichier d&rsquo;origine.<\/p>\n<h3>Obtenir une instance de l&rsquo;\u00e9diteur d&rsquo;images<\/h3>\n<p>Ensuite, vous devez obtenir une instance de la classe de l&rsquo;\u00e9diteur d&rsquo;images afin de pouvoir op\u00e9rer sur l&rsquo;image situ\u00e9e sur le chemin ci-dessus. Dans sa forme la plus basique, ce n&rsquo;est rien de plus que de passer un nom de fichier dans une fonction, puis un tableau d&rsquo;arguments.<\/p>\n<p>Dans cet article, je ne suis pas concern\u00e9 par le tableau d&rsquo;arguments &#8211; uniquement par l&rsquo;obtention d&rsquo;une instance de l&rsquo;\u00e9diteur avec laquelle je peux utiliser pour redimensionner une image.<\/p>\n<p>Pour saisir une instance dudit \u00e9diteur, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/96fa8bb3af0ee6fd821b3899e82d5fdb#file-01-get-editor-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">proc\u00e9dez simplement comme suit\u00a0:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/\/ Grab the editor for the filename of the image. \n$filename = '\/Users\/tommcfarlin\/Projects\/acme\/wp-content\/uploads\/2018\/06\/original-image.jpg';\nif (!file_exists($filename)) {\n  return;\n}\n\n$editor = wp_get_image_editor( $filename, array() );<\/code><\/pre>\n<p>Cela renverra soit une instance de l&rsquo;\u00e9diteur d&rsquo;une instance de <code>**[WP_Error](https:\/\/developer.wordpress.org\/reference\/classes\/wp_error\/)**<\/code>(avec un message d&rsquo;erreur et d&rsquo;autres informations que vous pouvez utiliser pour d\u00e9terminer le probl\u00e8me). Il est toujours bon de v\u00e9rifier si la valeur renvoy\u00e9e est une erreur et <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/96fa8bb3af0ee6fd821b3899e82d5fdb#file-02-check-for-errors-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">d&rsquo;arr\u00eater toute op\u00e9ration future.<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/\/ Grab the editor for the file and the size of the original image.\n$filename = '\/Users\/tommcfarlin\/Projects\/acme\/wp-content\/uploads\/2018\/06\/original-image.jpg';\nif (!file_exists($filename)) {\n  return;\n}\n\n$editor = wp_get_image_editor( $filename, array() );\nif (is_wp_error($editor)) {\n   \/\/ handle the problem however you deem necessary.\n}<\/code><\/pre>\n<p>En supposant qu&rsquo;il n&rsquo;y ait pas d&rsquo;erreur, cependant, vous pouvez commencer \u00e0 travailler pour redimensionner l&rsquo;image.<\/p>\n<h3>Redimensionner l&rsquo;image<\/h3>\n<p>Heureusement, c&rsquo;est quelque chose de facile \u00e0 faire. Vous avez besoin de trois informations :<\/p>\n<ol>\n<li>largeur,<\/li>\n<li>la taille,<\/li>\n<li>et si vous souhaitez ou non recadrer l&rsquo;image.<\/li>\n<\/ol>\n<p>D&rsquo;apr\u00e8s mon exp\u00e9rience, recadrer l&rsquo;image est presque toujours pr\u00e9f\u00e9rable car cela \u00e9vite tout \u00e9tirement ou distorsion \u00e9trange \u00e0 des rapports d&rsquo;aspect impairs.<\/p>\n<p>Lors du redimensionnement de l&rsquo;image, j&rsquo;aime toujours obtenir la taille actuelle de l&rsquo;image, puis utiliser un multiplicateur pour cr\u00e9er les nouvelles dimensions par lesquelles je veux redimensionner l&rsquo;image.<\/p>\n<p>Par exemple, disons que j&rsquo;ai une image et que je veux redimensionner la largeur de 40% et la hauteur de 30%. Pour ce faire, je dois :<\/p>\n<ol>\n<li>obtenir la taille de l&rsquo;image courante,<\/li>\n<li>utilisez les nouvelles largeur et hauteur pour redimensionner l&rsquo;image.<\/li>\n<\/ol>\n<p>Par programmation, voici <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/96fa8bb3af0ee6fd821b3899e82d5fdb#file-03-sizing-the-image-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">comment proc\u00e9der\u00a0:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/\/ Grab the editor for the file and the size of the original image.\n$filename = '\/Users\/tommcfarlin\/Projects\/acme\/wp-content\/uploads\/2018\/06\/original-image.jpg';\nif (!file_exists($filename)) {\n  return;\n}\n\n$editor = wp_get_image_editor( $filename, array() );\nif (is_wp_error($editor)) {\n   \/\/ Handle the problem however you deem necessary.\n}\n\n\/\/ Get the dimensions for the size of the current image.\n$dimensions = $editor-&gt;get_size();\n$width = $dimensions['width'];\n$height = $dimensions['height'];\n\n\/\/ Calculate the new dimensions for the image.\n$newWidth = 0.4 * $width;\n$newHeight = 0.3 * $height;\n\n\/\/ Resize the image.\n$result = $editor-&gt;resize($newWidth, $newHeight, true);<\/code><\/pre>\n<p>Assez facile \u00e0 suivre, n&rsquo;est-ce pas?<\/p>\n<h3>Enregistrement de l&rsquo;image<\/h3>\n<p>Enfin, il ne reste plus qu&rsquo;\u00e0 enregistrer l&rsquo;image. Dans ce cas, l&rsquo;image <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/96fa8bb3af0ee6fd821b3899e82d5fdb#file-04-saving-the-image-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sera \u00e9crite dans<\/a><\/strong> le r\u00e9pertoire de t\u00e9l\u00e9chargement (et g\u00e9n\u00e9ralement l&rsquo;ann\u00e9e et le mois fournis par WordPress).<\/p>\n<pre><code>&lt;?php\n\n\/\/ Grab the editor for the file and the size of the original image.\n$filename = '\/Users\/tommcfarlin\/Projects\/acme\/wp-content\/uploads\/2018\/06\/original-image.jpg';\nif (!file_exists($filename)) {\n  return;\n}\n\n$editor = wp_get_image_editor( $filename, array() );\nif (is_wp_error($editor)) {\n   \/\/ handle the problem however you deem necessary.\n}\n\n\/\/ Get the dimensions for the size of the current image.\n$dimensions = $editor-&gt;get_size();\n$width = $dimensions['width'];\n$height = $dimensions['height'];\n\n\/\/ Calculate the new dimensions for the image.\n$newWidth = 0.4 * $width;\n$newHeight = 0.3 * $height;\n\n\/\/ Resize the image.\n$result = $editor-&gt;resize($newWidth, $newHeight, true);\n\n\/\/ If there's no problem, save it; otherwise, print the problem.\nif (!is_wp_error($result)) {\n  $editor-&gt;save($editor-&gt;generate_filename());\n} else {\n   \/\/ Handle the problem however you deem necessary.\n}<\/code><\/pre>\n<p>Vous pouvez alors voir la version finale redimensionn\u00e9e (et nomm\u00e9e de mani\u00e8re appropri\u00e9e) en fonction de sa sortie.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cet article fournit un guide court et simple sur l&rsquo;utilisation de WP Image Editor pour redimensionner les images par programme.<\/p>\n","protected":false},"author":1,"featured_media":163264,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[717,841,862],"tags":[1167],"class_list":["post-230552","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developpeur","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=230552"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230552\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/163264"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=230552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=230552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=230552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}