Ein Skript für PHP 7.4+ zum Schneiden von Bildern (Karten) in Stücke (Kacheln). Basierend auf dem Map Tiler-Skript von Fedik. Dieses Skript behält die Proportionen des Eingabebildes bei und generiert nur die notwendigen Kacheln – quadratische Eingabedateien sind nicht erforderlich!
erfordert Komponist
Composer.json (Hinweis: dev-main
durch eine Versionsgrenze ersetzen)
{
"require" : {
"php" : " ^7.4 || ^8.0 " ,
"ext-imagick" : " * " ,
"chillerlan/php-imagetiler" : " dev-main "
}
}
Profitieren!
Nutzen Sie das Beispiel für Live-Tests.
// 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/ ' );
Das ist es!
Wenn Sie Probleme mit ImageMagick haben und sich über nicht genügend Speicherplatz im Cache-Pfad beschweren, sollten Sie möglicherweise die policy.xml
im ImageMagick-Installationspfad (unter Windows) überprüfen. Zu Ihrer Überlegung: Ein Bild der Größe 49152 x 49152 generiert eine Cache-Datei von ca. 28,5 GB.
Imagetiler
MethodenVerfahren | zurückkehren | Beschreibung |
---|---|---|
__construct(ContainerInterface $options = null, LoggerInterface $logger = null) | - | siehe SettingsContainerInterface und LoggerInterface . Ruft ein leeres ImagetilerOptions Objekt und ein PsrNullLogger auf, wenn die entsprechenden Parameter nicht festgelegt sind. |
setOptions(ContainerInterface $options) | Imagetiler | Legen Sie Optionen im laufenden Betrieb fest, die intern vom Konstruktor aufgerufen werden |
setOptimizer(Optimizer $optimizer) | Imagetiler | Legen Sie im laufenden Betrieb eine Optimierungsinstanz fest, die intern vom Konstruktor aufgerufen wird |
process(string $image_path, string $out_path) | Imagetiler | verarbeitet das angegebene Bild von $image_path und gibt die Ausgabe an $out_path aus |
ImagetilerOptions
EigenschaftenEigentum | Typ | Standard | erlaubt | Beschreibung |
---|---|---|---|---|
$tile_size | int | 256 | positiv int | Breite/Höhe einer einzelnen Fliese |
$zoom_min | int | 0 | positiv int | minimale Zoomstufe |
$zoom_max | int | 8 | positiv int | maximale Zoomstufe |
$zoom_normalize | int | null | positiv int | Diese Zoomstufe stellt die Größe des Originalbildes dar. Höhere Zoomstufen werden hochskaliert, was je nach Größe des Eingabebilds einige Zeit und Ressourcen in Anspruch nehmen kann. |
$tms | bool | FALSCH | * | Wenn auf „true“ gesetzt, wird der Ursprung gemäß der Tile Map Service-Spezifikation unten links, +y nach oben, festgelegt, andernfalls liegt der Ursprung oben links, +y nach unten, wie in der Google Maps-Spezifikation beschrieben |
$fill_color | Zeichenfolge | '#000000' | * | Die Füllfarbe für den verbleibenden Platz kann für PNG transparent sein |
$memory_limit | Zeichenfolge | '-1' | * | siehe php.ini-Einstellungen |
$store_structure | Zeichenfolge | '%1$d/%2$d/%3$d' | * | Speicherstruktur - kann alles sein. %1$d = Zoom, %2$d = x, %3$d = y. siehe sprintf() |
$fast_resize_upsample | bool | FALSCH | * | bestimmt, ob schnelles Imagick::scaleImage() (true) oder langsames Imagick::resizeImage() (false) verwendet werden soll. |
$resize_filter_upsample | int | Imagick::FILTER_ROBIDOUXSHARP | Imagick::FILTER_* | siehe Imagick::resizeImage() und Imagick-Filterkonstanten |
$resize_blur_upsample | schweben | 1,0 | positiver Float | siehe Imagick::resizeImage() |
$fast_resize_downsample | bool | FALSCH | * | siehe $fast_resize_upsample |
$resize_filter_downsample | int | Imagick::FILTER_LANCZOSRADIUS | Imagick::FILTER_* | siehe $resize_filter_upsample |
$resize_blur_downsample | schweben | 1,0 | positiver Float | siehe $resize_blur_upsample |
$tile_format | Zeichenfolge | 'png' | png, jpg | siehe Imagick-Formate |
$tile_ext | Zeichenfolge | null | * | Kachelbilderweiterung – wird automatisch anhand des Formats erkannt, wenn keine angegeben ist. |
$quality_jpeg | int | 80 | 0-100 | Qualität des gespeicherten Bildes im JPEG-Format |
$imagick_tmp | Zeichenfolge | null | * | ImageMagick tmp-Ordner |
$overwrite_base_image | bool | FALSCH | * | |
$overwrite_tile_image | bool | FALSCH | * | |
$clean_up | bool | WAHR | * | ob temporäre Bilder gelöscht werden sollen oder nicht |
$optimize_output | bool | FALSCH | * | Bildoptimierung aktivieren (erfordert Optimizer Instanz) |
$no_temp_baseimages | bool | FALSCH | * | ob temporäre Basisbilder erstellt und gespeichert werden sollen (kann Ressourcen sparen) |