web-dev-qa-db-fra.com

Créer une vignette à partir d'une image déjà sur le serveur?

J'essaie de générer des miniatures sur mon serveur qui sont téléchargées par un plugin. Il télécharge toutes les images dans un répertoire. J'essaie de cibler ces fichiers, puis de créer une vignette basée sur img_resize, mais je n'ai aucune chance. Finalement, j'insérerai les pouces dans la médiathèque et dans la méta de l'utilisateur, mais je ne peux même pas produire une vignette pour le moment, c'est donc la première tâche à accomplir!

Voici mon code simple jusqu'à présent:

require_once(ABSPATH . '/wp-admin/includes/media.php');
require_once(ABSPATH . '/wp-admin/includes/image.php');

$file = 'http://www.mysite.org/uploads/uploaddir/2012/02/bill.jpeg';

$max_w = 200;
$max_h = 200;
$crop = true;

$filePathInfo = pathinfo($file);
$fileName = $filePathInfo['basename'];

$wpUploadPath = wp_upload_dir();
$destpath = $wpUploadPath['basedir'].'/'.$fileName;

image_resize( $file, $max_w, $max_h, $crop );

J'ai aussi essayé d'utiliser le $destpath et rien ne se passe. Aucune vignette n'est générée. Est-ce que je pense à cela de manière incorrecte?

Toute lumière que quiconque pourrait apporter sur cette situation serait grandement appréciée.

Merci!

Tre

NOTE RÉSOLU: C'est le code qui a finalement fonctionné pour moi. J'utilisais auparavant l'URI pour définir l'image_resize. Pas le répertoire absolu.

$wpUploadDir = wp_upload_dir();
$baseDir = $wpUploadDir['basedir'];
$fileName = 'bill.jpg';
$filePath = $baseDir . "/" . $fileName;
$wp_filetype = wp_check_filetype($filePath, null);
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => $fileName,
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $filePath );

require_once(ABSPATH . 'wp-admin/includes/image.php');
require_once(ABSPATH . 'wp-admin/includes/media.php');
$attach_data = wp_generate_attachment_metadata( $attach_id, $filePath );
wp_update_attachment_metadata( $attach_id, $attach_data );

image_resize($filePath, 200, 200, true, '200x200');
1
tr3online

En regardant votre code, il semble que le fichier sera recherché dans .../wp-content/uploads/bill.jpeg. Vous devrez également inclure le aaaa/mm. Je voudrais utiliser ceci:

require_once(ABSPATH . '/wp-admin/includes/media.php');
require_once(ABSPATH . '/wp-admin/includes/image.php');

$file = 'http://www.mysite.org/uploads/uploaddir/2012/02/bill.jpeg';

# Function reference
# image_resize ( $file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90 )

$wpUploadPath = wp_upload_dir();
$fileName = preg_replace('/^.*?\/(\d{4})\/(\d\d)\/(.*)$/', $wpUploadPath['basedir'].'/$1/$2/$3', $file);

image_resize( $fileName, 200, 200, true, '200x200' );

Faites un tourbillon et laissez-moi savoir comment vous vous en sortez!

1
Matthew Boynes

Si vous avez des images sur votre serveur que vous souhaitez ajouter à WordPress, puis créez des tailles intermédiaires de vignettes:

  1. Ajoutez-les à la base de données WP en tant que types de pièce jointe, par exemple. via le Ajoutez un plug-in de serveur .
  2. Vous devrez peut-être alors demander à WordPress de régénérer des tailles d’image intermédiaires pour ces images, par exemple. via le plugin Regenerate Thumbnails .

Si nous savions quel plug-in vous utilisez pour télécharger des images et quelle était l'utilisation envisagée de ces images, nous pourrions vous fournir une réponse plus précise pour votre cas d'utilisation.

0
Chip Bennett