1 <?php
2
3 4 5 6 7 8
9
10 class ImageResizeTask extends BuildTask {
11
12 protected $title = 'Auto resize big images';
13
14 protected $description = "Уменьшает размеры всех картинок сайта до указанных в конфиге сайта с помощью расширения ImageAutoResize<br/>
15 в конфиге сайта можно задать:
16 <ul>
17 <li>ImageAutoResize::set_max_size(1000, 800) - максимальный размер загружаемой на сайт картинки (все что больше будет масштабироваться)</li>
18 <li>ImageAutoResize::set_quality(85) - качество JPG картинок</li>
19 <li>ImageAutoResize::disable() - запретить автоматическое масштабирование</li>
20 </ul> ";
21
22 function init() {
23 if (!(Director::isDev() || Director::is_cli() || Permission::check("ADMIN")))
24 return Security::permissionFailure($this);
25
26 parent::init();
27 }
28
29 function run($request) {
30 if (!Director::is_cli()) return 'Задача может быть запущена только с консоли';
31 $bytes = 0;
32 echo "Image quality: " . ImageAutoResize::quality() . "%\n\n";
33 foreach (DataObject::get('Image') as $image) {
34 $filename = $image->getFullPath();
35 list($oldWidtgh, $oldHeight) = getimagesize($filename);
36 $oldSize = filesize($filename);
37 if ($image->doAutoResize()) {
38 list($newWidtgh, $newHeight) = getimagesize($filename);
39 $newSize = filesize($filename);
40 $delta = $newSize-$oldSize;
41 $bytes -= $delta;
42 $unit = 'b';
43 if (abs($delta) > 1024) {
44 $delta = ceil($delta/1024);
45 $unit = 'Kb';
46 }
47 printf("%-90s: (%4d, %4d) -> (%4d, %4d) = %3d%% (%+d %s)\n",
48 $filename, $oldWidtgh, $oldHeight, $newWidtgh, $newHeight, round(100*$newSize/$oldSize), $delta, $unit
49 );
50 }
51 }
52 echo "\nTotal economy: ";
53 echo ($bytes > 1024*1024) ? ceil($bytes/1024/1024)."Mb\n" : ceil($bytes/1024)."Kb\n";
54 }
55 }
56
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the
Silverstripe Forums to ask development related questions.
-