|
1
|
|
|
<?php |
|
2
|
|
|
/** |
|
3
|
|
|
* @filesource imagetiler.php |
|
4
|
|
|
* @created 20.06.2018 |
|
5
|
|
|
* @author smiley <[email protected]> |
|
6
|
|
|
* @copyright 2018 smiley |
|
7
|
|
|
* @license MIT |
|
8
|
|
|
*/ |
|
9
|
|
|
|
|
10
|
|
|
namespace chillerlan\ImagetilerExamples; |
|
11
|
|
|
|
|
12
|
|
|
use chillerlan\Imagetiler\{Imagetiler, ImagetilerException, ImagetilerOptions}; |
|
13
|
|
|
use ImageOptimizer\OptimizerFactory; |
|
14
|
|
|
use Psr\Log\AbstractLogger; |
|
15
|
|
|
|
|
16
|
|
|
require_once __DIR__.'/../vendor/autoload.php'; |
|
17
|
|
|
|
|
18
|
|
|
$input = __DIR__.'/[YOUR HUGE IMAGE].png'; |
|
19
|
|
|
$utils = __DIR__.'/path/to/utils/%s[.exe]'; |
|
20
|
|
|
|
|
21
|
|
|
$options = [ |
|
22
|
|
|
// ImagetilerOptions |
|
23
|
|
|
'zoom_min' => 0, |
|
24
|
|
|
'zoom_max' => 8, |
|
25
|
|
|
'zoom_normalize' => 7, |
|
26
|
|
|
'tms' => false, |
|
27
|
|
|
'fill_color' => '#000000', |
|
28
|
|
|
'fast_resize' => false, |
|
29
|
|
|
'overwrite_tile_image' => true, |
|
30
|
|
|
'clean_up' => false, |
|
31
|
|
|
'optimize_output' => true, |
|
32
|
|
|
'memory_limit' => '8G', |
|
33
|
|
|
'tile_format' => 'jpeg', |
|
34
|
|
|
# 'overwrite_base_image' => true, |
|
35
|
|
|
'no_temp_baseimages' => true, |
|
36
|
|
|
'resize_blur_upsample' => 0.7, |
|
37
|
|
|
'resize_blur_downsample' => 0.7, |
|
38
|
|
|
]; |
|
39
|
|
|
|
|
40
|
|
|
$optimizer_settings = [ |
|
41
|
|
|
'execute_only_first_png_optimizer' => false, |
|
42
|
|
|
'advpng_bin' => sprintf($utils, 'advpng'), |
|
43
|
|
|
'optipng_bin' => sprintf($utils, 'optipng'), |
|
44
|
|
|
'pngcrush_bin' => sprintf($utils, 'pngcrush'), |
|
45
|
|
|
'pngquant_bin' => sprintf($utils, 'pngquant'), |
|
46
|
|
|
'execute_only_first_jpeg_optimizer' => false, |
|
47
|
|
|
'jpegoptim_bin' => sprintf($utils, 'jpegoptim'), |
|
48
|
|
|
'jpegtran_bin' => sprintf($utils, 'jpegtran'), |
|
49
|
|
|
]; |
|
50
|
|
|
|
|
51
|
|
|
$options = new ImagetilerOptions($options); |
|
52
|
|
|
|
|
53
|
|
|
$logger = new class() extends AbstractLogger{ |
|
54
|
|
|
public function log($level, $message, array $context = []){ |
|
55
|
|
|
echo sprintf('[%s][%s] %s', date('Y-m-d H:i:s'), substr($level, 0, 4), trim($message))."\n"; |
|
56
|
|
|
} |
|
57
|
|
|
}; |
|
58
|
|
|
|
|
59
|
|
|
$optimizer = (new OptimizerFactory($optimizer_settings, $logger))->get($options->tile_format); |
|
60
|
|
|
$tiler = new Imagetiler($options, $optimizer, $logger); |
|
61
|
|
|
|
|
62
|
|
|
try{ |
|
63
|
|
|
$tiler->process($input, __DIR__.'/tiles'); |
|
64
|
|
|
} |
|
65
|
|
|
catch(ImagetilerException $e){ |
|
66
|
|
|
$logger->error($e->getMessage()); |
|
67
|
|
|
$logger->error($e->getTraceAsString()); |
|
68
|
|
|
} |
|
69
|
|
|
|