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

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

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


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