4 / 4 / 8
Регистрация: 11.11.2014
Сообщений: 256
1

Как можно оптимизировать код?

27.06.2019, 17:11. Показов 234. Ответов 1
Метки нет (Все метки)

Здравствуйте.
Написал скрипт, позволяющий считывать с сервера картинку, преобразовывать ее в нужный размер и накладывать на нее другую png картинку с прозрачными элементами с теми же размерами. Если картинка не равносторонняя, то помещаем ее на пустую картинку с белым фоном и равными сторонами.
Скрипт работает очень долго! Я полагаю из за постоянного считывания и записи.
Как можно оптимизировать код?


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
<?php
 
// Накладываем .png на .jpeg
function image_plus_maska($url_pik){
    
// Продлеваем работу скрипта 
ini_set('max_execution_time', '600');
 
// исходная картинка
$img =  imagecreatefromjpeg($url_pik);
 
//Получаем имя файла с расширением  с сервера
$file_name = basename($url_pik);
 
//создаем папки (for_timewatch_prom_ua и temp) если их нет
$path1 = "for_timewatch_prom_ua";
$path2 = "temp";
if(!is_dir($path1)){
  mkdir($path1);
}
if(!is_dir($path2)){
  mkdir($path2);
}
 
//сохраняем файл
imagejpeg($img, $path2.'/file.jpeg'); 
 
//узнаем размеры картинки
$size =  getimagesize($path2.'/file.jpeg');
 
// картинка, которая будет использована в качестве фона
$watermark_src = $path2.'/fon.jpeg';
$x=0;
$y=0;
if ($size[0]>$size[1]) {  // задаем размер фона
//Если ширина > высоты
    imageresize($path2.'/fon.jpeg',$watermark_src,$size[0],$size[0],100);
    $y=($size[0]-$size[1])/2;
}
else{
    //Если ширина < высоты
    imageresize($path2.'/fon.jpeg',$watermark_src,$size[1],$size[1],100);
    $x=($size[1]-$size[0])/2;
}
 
// задаем прозрачность водяного знака
$opacity = 100;
 
////Загружаем изображения фона
$image = imagecreatefromjpeg($path2.'/fon.jpeg');
$watermark = imagecreatefromjpeg( $path2.'/file.jpeg');
 
//Накладываем картинку на фон
imagecopy($image, $watermark, $x, $y,0, 0, imagesx($watermark), imagesy($watermark));
 
//сохраняем файл
imagejpeg($image, $path2.'/file1.jpeg');
 
//Загружаем изображения картинки
$image = $path2.'/file1.jpeg';
 
//задаем размер картинки
imageresize($path2.'/file1.jpeg',$image,1190,1200,100);
 
//Загружаем изображения картинки с новыми размерами
$image = imagecreatefromjpeg($path2.'/file1.jpeg');
 
//Загружаем изображения фона с новыми размерами
$watermark = imagecreatefrompng($path2.'/stamp.png');
 
// задаем прозрачность
imagesavealpha($watermark, true);
 
// Накладываем .png на .jpeg
imagecopy($image, $watermark, 0, 0,0, 0, imagesx($watermark), imagesy($watermark));
 
//сохраняем готовое изображение
imagejpeg($image, $path1.'/'.$file_name);
 
// очищаем память
imagedestroy($image);
imagedestroy($watermark);
 
}
 
//задаем размер картинки
function imageresize($outfile, $infile, $neww, $newh, $quality) {
 
        $im=imagecreatefromjpeg($infile);
        $im1=imagecreatetruecolor($neww,$newh);
        imagecopyresampled($im1,$im,0,0,0,0,$neww,$newh,imagesx($im),imagesy($im));
 
        imagejpeg($im1,$outfile,$quality);
        imagedestroy($im);
        imagedestroy($im1);
 
      }
?>
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2019, 17:11
Ответы с готовыми решениями:

Как можно оптимизировать этот код?
Как можно оптимизировать этот код? $preview = 'preview.'; $preview_url = 'images/' . $folder ....

Навигация по сайту. Как оптимизировать и уменьшить код
Придумываю навигацию по сайту. Вот что вышло, как уменьшить может в массив засунуть кто подскажет?...

Как можно оптимизировать тройной вложенный цикл и запрос к БД
на входе 3 массива 1-й $arResult, содержит массив из ID команд, которые в свою очередь содержат...

Оптимизировать код
Проверка существования переменной $_POST. Если она есть, то задаем $comm; если $comm пустая или...

1
4 / 4 / 8
Регистрация: 11.11.2014
Сообщений: 256
27.06.2019, 23:32  [ТС] 2
Странно, на данный момент 50 просмотров и ни кто не подскажит решение проблемы?
Не ужели все в код нормально и оптимизации он не подлежит?

Добавлено через 2 минуты
И все таки, можно здесь работать только с памятью без обращения к диску или все равно придется обращаться к диску?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2019, 23:32

Оптимизировать код
function test($ts) { if(isset($_GET) { $a =...

Оптимизировать код
$country = clearData ($_POST ); $city = clearData ($_POST ); $price = clearData ($_POST , &quot;i&quot;);...

Оптимизировать код
Всем привет, дайте совет, быть может можно как то оптимизироват? Суть того что $slugCheck содержит...

Помогите оптимизировать код
Помогите пожалуйста оптимизировать код: $text = &quot;Наконец, самое важное, что должен учесть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.