powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / CKFinder + watermark. Загрузка ЦП хостинга при обработке изображений.
3 сообщений из 3, страница 1 из 1
CKFinder + watermark. Загрузка ЦП хостинга при обработке изображений.
    #38080561
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто пользовался расскажите, почему изза обработки фоток большая нагрузка на цп? мне провайдер пишет ай-ай-ай.

Использую плагин watermark. вот код:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
class Watermark
{
    function onAfterFileUpload($currentFolder, $uploadedFile, $sFilePath)
    {
        global $config;
        $watermarkSettings = $config['Plugin_Watermark'];

        $this->createWatermark($sFilePath, $watermarkSettings['source'], null, $watermarkSettings['marginx'],
            $watermarkSettings['marginy'], $watermarkSettings['quality'], $watermarkSettings['transparency']);

        return true;
    }

    function createWatermark($sourceFile, $watermarkFile, $newfile = null, $marginx = 5, $marginy = 5, $quality = 90, $transparency = 100)
    { 
        if (!file_exists($watermarkFile)) {
            $watermarkFile = dirname(__FILE__) . "/" . $watermarkFile;
        }
        if (!file_exists($sourceFile)) {
            $sourceFile = dirname(__FILE__) . "/" . $sourceFile;
        }
        if (empty($newfile)) $newfile = $sourceFile;
        if (!file_exists($watermarkFile)) {
            return false;
        }

        $watermarkImageAttr = @getimagesize($watermarkFile);
        $sourceImageAttr = @getimagesize($sourceFile);
        if ($sourceImageAttr === false || $watermarkImageAttr === false) {
            return false;
        }

        switch ($watermarkImageAttr['mime'])
        {
            case 'image/gif':
                {
                    if (@imagetypes() & IMG_GIF) {
                        $oWatermarkImage = @imagecreatefromgif($watermarkFile);
                    } else {
                        $ermsg = 'GIF images are not supported';
                    }
                }
                break;
            case 'image/jpeg':
                {
                    if (@imagetypes() & IMG_JPG) {
                        $oWatermarkImage = @imagecreatefromjpeg($watermarkFile) ;
                    } else {
                        $ermsg = 'JPEG images are not supported';
                    }
                }
                break;
            case 'image/png':
                {
                    if (@imagetypes() & IMG_PNG) {
                        $oWatermarkImage = @imagecreatefrompng($watermarkFile) ;
                    } else {
                        $ermsg = 'PNG images are not supported';
                    }
                }
                break;
            case 'image/wbmp':
                {
                    if (@imagetypes() & IMG_WBMP) {
                        $oWatermarkImage = @imagecreatefromwbmp($watermarkFile);
                    } else {
                        $ermsg = 'WBMP images are not supported';
                    }
                }
                break;
            default:
                $ermsg = $watermarkImageAttr['mime'].' images are not supported';
                break;
        }

        switch ($sourceImageAttr['mime'])
        {
            case 'image/gif':
                {
                    if (@imagetypes() & IMG_GIF) {
                        $oImage = @imagecreatefromgif($sourceFile);
                    } else {
                        $ermsg = 'GIF images are not supported';
                    }
                }
                break;
            case 'image/jpeg':
                {
                    if (@imagetypes() & IMG_JPG) {
                        $oImage = @imagecreatefromjpeg($sourceFile) ;
                    } else {
                        $ermsg = 'JPEG images are not supported';
                    }
                }
                break;
            case 'image/png':
                {
                    if (@imagetypes() & IMG_PNG) {
                        $oImage = @imagecreatefrompng($sourceFile) ;
                    } else {
                        $ermsg = 'PNG images are not supported';
                    }
                }
                break;
            case 'image/wbmp':
                {
                    if (@imagetypes() & IMG_WBMP) {
                        $oImage = @imagecreatefromwbmp($sourceFile);
                    } else {
                        $ermsg = 'WBMP images are not supported';
                    }
                }
                break;
            default:
                $ermsg = $sourceImageAttr['mime'].' images are not supported';
                break;
        }

        if (isset($ermsg) || false === $oImage || false === $oWatermarkImage) {
            return false;
        }

        $watermark_width = $watermarkImageAttr[0];
        $watermark_height = $watermarkImageAttr[1];
        $src_w = $sourceImageAttr[0];
        $src_h = $sourceImageAttr[1];
        $dx[0] = round($src_w / 2 - $watermark_width / 2);
        $dy[0] = round($src_h / 2 - $watermark_height / 2);
        if ((($dx[0] - $watermark_width - 20) > $marginx) && (($dy[0] - $watermark_height - 10) > $marginy)){
          $dx[1] = $marginx;
          $dy[1] = $marginy;
          $dx[2] = $src_w - $watermark_width - $marginx;
          $dy[2] = $src_h - $watermark_height - $marginy;
        }  
        if ( $sourceImageAttr['mime'] == 'image/png')
        {
            if(function_exists('imagesavealpha') && function_exists('imagecolorallocatealpha') )
            {
                 $bg = imagecolorallocatealpha($oImage, 255, 255, 255, 127); // (PHP 4 >= 4.3.2, PHP 5)
                 imagefill($oImage, 0, 0 , $bg);
                 imagealphablending($oImage, true);
                 imagesavealpha($oImage, true);  // (PHP 4 >= 4.3.2, PHP 5)
            }
        }
        for ($i=0; $i < count($dx); $i++){
          if ($watermarkImageAttr['mime'] == 'image/png') {
							imagecopy($oImage, $oWatermarkImage, $dx[$i], $dy[$i], 0, 0, $watermark_width, $watermark_height);
          }
          else 
              imagecopymerge($oImage, $oWatermarkImage, $dx[$i], $dy[$i], 0, 0, $watermark_width, $watermark_height, $transparency);
        }

        switch ($sourceImageAttr['mime'])
        {
            case 'image/gif':
                imagegif($oImage, $newfile);
                break;
            case 'image/jpeg':
                imagejpeg($oImage, $newfile, $quality);
                break;
            case 'image/png':
                imagepng($oImage, $newfile);
                break;
            case 'image/wbmp':
                imagewbmp($oImage, $newfile);
                break;
        }

        imageDestroy($oImage);
        imageDestroy($oWatermarkImage);
    }

}


$watermark = new Watermark();
$config['Hooks']['AfterFileUpload'][] = array($watermark, 'onAfterFileUpload');
if (empty($config['Plugin_Watermark']))
{
    $config['Plugin_Watermark'] = array(
        "source" => "wm.png",
        "marginx" => 5,
        "marginy" => 5,
        "quality" => 90,
        "transparency" => 90,
    );
}


Вроде если пользоваться функцией напрямую, то загрузка меньше. Может как то можно еще обойтись с изображениями, чтобы наносить ватермарк?
...
Рейтинг: 0 / 0
CKFinder + watermark. Загрузка ЦП хостинга при обработке изображений.
    #38080591
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Промешан_почему изза обработки фоток большая нагрузка на цп?Как то так повелось, что обработка изображений требует больших затрат ресурсов. Память тоже кушается будь здоров, особенно, при больших размерах изображений.
_Промешан_мне провайдер пишет ай-ай-ай.Вы их тысячами чтоль обрабатываете?
...
Рейтинг: 0 / 0
CKFinder + watermark. Загрузка ЦП хостинга при обработке изображений.
    #38080621
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle_Промешан_почему изза обработки фоток большая нагрузка на цп?Как то так повелось, что обработка изображений требует больших затрат ресурсов. Память тоже кушается будь здоров, особенно, при больших размерах изображений.
_Промешан_мне провайдер пишет ай-ай-ай.Вы их тысячами чтоль обрабатываете?
Нет. Просто вчера добавил. Загружаю фотку (3 метра, еще обрезается по 1600х1200 автоматически) и сразу на полпроцента увеличивается нагрузка. Но это через манагер скфайндер. Напрямую обработка водяными знаками так сильно не жрет :(

Абыдна, при том что 3%/час лимит на моем тарифе.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / CKFinder + watermark. Загрузка ЦП хостинга при обработке изображений.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]