Un script pour PHP 7.4+ pour couper des images (cartes) en morceaux (tuiles). Basé sur le script de carreleur de carte de Fedik. Ce script conservera les proportions de l'image d'entrée et générera uniquement les tuiles nécessaires - pas besoin de fichiers d'entrée carrés !
nécessite un compositeur
composer.json (remarque : remplacez dev-main
par une limite de version)
{
"require" : {
"php" : " ^7.4 || ^8.0 " ,
"ext-imagick" : " * " ,
"chillerlan/php-imagetiler" : " dev-main "
}
}
Profit!
Utilisez l'exemple pour les tests en direct.
// invoke an options instance
$ options = new ImagetilerOptions ([
' zoom_min ' => 0 ,
' zoom_max ' => 8 ,
' zoom_normalize ' => 6 ,
' fill_color ' => ' transparent ' ,
' fast_resize ' => true ,
' optimize_output ' => true ,
// ... whatever you need
]);
// see https://github.com/psliwa/image-optimizer#configuration
$ optimizer = ( new OptimizerFactory ([]))-> get ();
// invoke and run the tiler
$ tiler = new Imagetiler ( $ options , $ optimizer );
$ tiler -> process ( ' /path/to/image.png ' , ' /path/to/output/ ' );
C'est ça!
Si vous rencontrez des problèmes avec ImageMagick et vous plaignez d'un espace insuffisant sur le chemin du cache, vous souhaiterez peut-être vérifier le policy.xml
dans le chemin d'installation d'ImageMagick (sous Windows). Pour votre considération : une image de 49152x49152 générera un fichier cache de ~28,5 Go,
Imagetiler
méthode | retour | description |
---|---|---|
__construct(ContainerInterface $options = null, LoggerInterface $logger = null) | - | voir SettingsContainerInterface et LoggerInterface . Appelle un objet ImagetilerOptions vide et un PsrNullLogger si les paramètres respectifs ne sont pas définis. |
setOptions(ContainerInterface $options) | Imagetiler | définir les options à la volée, appelées en interne par le constructeur |
setOptimizer(Optimizer $optimizer) | Imagetiler | définir une instance d'optimiseur à la volée, appelée en interne par le constructeur |
process(string $image_path, string $out_path) | Imagetiler | traite l'image donnée depuis $image_path et vide la sortie vers $out_path |
ImagetilerOptions
propriété | taper | défaut | autorisé | description |
---|---|---|---|---|
$tile_size | int | 256 | entier positif | largeur/hauteur d'une seule tuile |
$zoom_min | int | 0 | entier positif | niveau de zoom minimum |
$zoom_max | int | 8 | entier positif | niveau de zoom maximum |
$zoom_normalize | int | nul | entier positif | ce niveau de zoom représente la taille de l'image originale. les niveaux de zoom supérieurs à cela seront mis à l'échelle, ce qui peut prendre du temps et des ressources en fonction de la taille de l'image d'entrée. |
$tms | bouffon | FAUX | * | si défini sur true : l'origine sera définie en bas à gauche, +y vers le haut, conformément à la spécification du service Tile Map, sinon l'origine sera en haut à gauche, +y vers le bas, comme décrit par la spécification Google Maps. |
$fill_color | chaîne | '#000000' | * | la couleur de remplissage pour l'espace restant, peut être transparente pour png |
$memory_limit | chaîne | '-1' | * | voir les paramètres php.ini |
$store_structure | chaîne | '%1$d/%2$d/%3$d' | * | structure de stockage - peut être n'importe quoi. %1$d = zoom, %2$d = x, %3$d = y. voir sprintf() |
$fast_resize_upsample | bouffon | FAUX | * | détermine s'il faut utiliser Imagick::scaleImage() rapide (true) ou Imagick::resizeImage() lente (false) |
$resize_filter_upsample | int | Imagick::FILTER_ROBIDOUXSHARP | Imagick::FILTER_* | voir Imagick::resizeImage() et constantes de filtre Imagick |
$resize_blur_upsample | flotter | 1.0 | flotteur positif | voir Imagick::resizeImage() |
$fast_resize_downsample | bouffon | FAUX | * | voir $fast_resize_upsample |
$resize_filter_downsample | int | Imagick::FILTER_LANCZOSRADIUS | Imagick::FILTER_* | voir $resize_filter_upsample |
$resize_blur_downsample | flotter | 1.0 | flotteur positif | voir $resize_blur_upsample |
$tile_format | chaîne | 'png' | png, jpg | voir les formats Imagick |
$tile_ext | chaîne | nul | * | extension d'image de tuile - détectée automatiquement à partir du format si aucun n'est fourni. |
$quality_jpeg | int | 80 | 0-100 | qualité de l'image enregistrée au format jpeg |
$imagick_tmp | chaîne | nul | * | Dossier ImageMagick tmp |
$overwrite_base_image | bouffon | FAUX | * | |
$overwrite_tile_image | bouffon | FAUX | * | |
$clean_up | bouffon | vrai | * | s'il faut ou non supprimer les images temporaires |
$optimize_output | bouffon | FAUX | * | activer l'optimisation de l'image (nécessite une instance Optimizer ) |
$no_temp_baseimages | bouffon | FAUX | * | s'il faut ou non créer et enregistrer des images de base temporaires (peut économiser des ressources) |