php imagetiler
3.2.0
PHP 7.4+ 的腳本,用於將影像(地圖)切割成碎片(圖塊)。基於 Fedik 的地圖平鋪器腳本。該腳本將保留輸入圖像的比例並僅生成必要的圖塊 - 不需要方形輸入檔!
需要作曲家
composer.json (注意:用版本邊界取代dev-main
)
{
"require" : {
"php" : " ^7.4 || ^8.0 " ,
"ext-imagick" : " * " ,
"chillerlan/php-imagetiler" : " dev-main "
}
}
利潤!
使用範例進行即時測試。
// 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/ ' );
就是這樣!
如果您遇到 ImageMagick 抱怨快取路徑上空間不足的問題,您可能需要檢查 ImageMagick 安裝路徑(在 Windows 上)中的policy.xml
。供您考慮:49152x49152 的圖片將產生 ~28.5GB 的快取文件,
Imagetiler
公共方法方法 | 返回 | 描述 |
---|---|---|
__construct(ContainerInterface $options = null, LoggerInterface $logger = null) | - | 請參閱SettingsContainerInterface 和LoggerInterface 。如果未設定對應參數,則呼叫空ImagetilerOptions 物件和PsrNullLogger 。 |
setOptions(ContainerInterface $options) | Imagetiler | 即時設定選項,由建構函數內部調用 |
setOptimizer(Optimizer $optimizer) | Imagetiler | 動態設定優化器實例,由建構函式內部調用 |
process(string $image_path, string $out_path) | Imagetiler | 處理$image_path 中的給定映像並將輸出轉儲到$out_path |
ImagetilerOptions
屬性財產 | 類型 | 預設 | 允許 | 描述 |
---|---|---|---|---|
$tile_size | 整數 | 256 | 正整數 | 單一瓷磚的寬度/高度 |
$zoom_min | 整數 | 0 | 正整數 | 最小縮放級別 |
$zoom_max | 整數 | 8 | 正整數 | 最大縮放級 |
$zoom_normalize | 整數 | 無效的 | 正整數 | 此縮放等級代表原始影像的大小。高於此的縮放等級將被放大,這可能需要一些時間和資源,具體取決於輸入影像的大小。 |
$tms | 布林值 | 錯誤的 | * | 如果設定為 true - 根據 Tile 地圖服務規範,原點將設定為左下角,+y 向上,否則原點位於左上角,+y 向下,如 Google 地圖規範所述 |
$fill_color | 細繩 | “#000000” | * | 剩餘空間的填滿顏色,對於 png 可以是透明的 |
$memory_limit | 細繩 | ‘-1’ | * | 請參閱 php.ini 設定 |
$store_structure | 細繩 | “%1$d/%2$d/%3$d” | * | 儲存結構 - 可以是任何東西。 %1$d = 縮放,%2$d = x,%3$d = y。參見 sprintf() |
$fast_resize_upsample | 布林值 | 錯誤的 | * | 確定是使用快速Imagick::scaleImage() (true) 還是慢速Imagick::resizeImage() (false) |
$resize_filter_upsample | 整數 | Imagick::FILTER_ROBIDOUXSHARP | Imagick::FILTER_* | 請參閱Imagick::resizeImage() 和 Imagick 過濾器常數 |
$resize_blur_upsample | 漂浮 | 1.0 | 正浮動 | 參見Imagick::resizeImage() |
$fast_resize_downsample | 布林值 | 錯誤的 | * | 參見$fast_resize_upsample |
$resize_filter_downsample | 整數 | Imagick::FILTER_LANCZOSRADIUS | Imagick::FILTER_* | 參見$resize_filter_upsample |
$resize_blur_downsample | 漂浮 | 1.0 | 正浮動 | 參見$resize_blur_upsample |
$tile_format | 細繩 | 'png' | .png、jpg | 請參閱 Imagick 格式 |
$tile_ext | 細繩 | 無效的 | * | 平鋪影像副檔名 - 如果沒有給出,則從格式中自動偵測。 |
$quality_jpeg | 整數 | 80 | 0-100 | 以 jpeg 格式儲存的影像的質量 |
$imagick_tmp | 細繩 | 無效的 | * | ImageMagick tmp 資料夾 |
$overwrite_base_image | 布林值 | 錯誤的 | * | |
$overwrite_tile_image | 布林值 | 錯誤的 | * | |
$clean_up | 布林值 | 真的 | * | 是否刪除臨時影像 |
$optimize_output | 布林值 | 錯誤的 | * | 啟用影像最佳化(需要Optimizer 實例) |
$no_temp_baseimages | 布林值 | 錯誤的 | * | 是否建立並儲存臨時基礎鏡像(可以節省資源) |