web-dev-qa-db-fra.com

Obtenir la taille (taille en Kb ou MB) d'une image sélectionnée?

J'ai besoin d'afficher des informations sur l'image en vedette sur la page de publication. Parmi d'autres informations, j'ai besoin d'afficher la taille du fichier de l'image (image sélectionnée de post).

J'ai essayé cette fonction dans single.php.

<?php
function getSize($file){
   $bytes = filesize($file);
   $s = array('b', 'Kb', 'Mb', 'Gb');
   $e = floor(log($bytes)/log(1024));

  return sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));
}
?>

et pour faire écho à cela:

<?php echo getSize('/wp-content/uploads/2014/06/some-file-name.jpg'); ?>

Cela fonctionne, mais j’ai besoin d’aide pour que ti récupère automatiquement l’URL de l’image en vedette, mais pas pour l’entrer manuellement dans le code?

Par exemple, je l'utilise pour faire écho à l'URL de l'image sélectionnée ("complète"):

 <?php
 if ( has_post_thumbnail()) {
   $full_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'full');
echo $thumb_image_url[0];
 }
?> 

Pourriez-vous s'il vous plaît aider à le combiner, ou pour me fournir une autre solution?

1
Advanced SEO

Vous pouvez utiliser get_attached_file() pour:

Récupérez le chemin du fichier joint en fonction de l'ID de pièce jointe.

Et get_post_thumbnail_id() pour déterminer la miniature de publication de la publication en cours, ou toute publication si vous définissez le paramètre $post_id. Utilisation exemplaire:

$bytes = filesize(
    get_attached_file(
        get_post_thumbnail_id()
    )
);

Utilisez size_format() to

Convertir un nombre d'octets donné dans un format lisible par l'homme

$hr_size = size_format( $bytes );

Si vous souhaitez réellement obtenir la taille d’une des tailles intermédiaires, le texte ci-dessus indique la taille du fichier de l’image complète. Utilisez image_get_intermediate_size() , où:

Les métadonnées "tailles" sont utilisées pour les tailles compatibles qui peuvent être utilisées pour le paramètre $ size value.

Ce qui signifie qu’il utilise wp_get_attachment_metadata() pour obtenir les données. De plus, vous avez besoin de wp_upload_dir() pour construire le chemin. Utilisation exemplaire:

$upload_dir = wp_upload_dir();
$metadata_size = image_get_intermediate_size( 
    get_post_thumbnail_id(),
    'thumbnail'
);
$path_inter = $upload_dir[ 'basedir' ] . '/' . $metadata_size[ 'path' ];
$bytes = filesize(
    $path_inter
);
$hr_size = size_format( $bytes );
7
Nicolai