Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/30: Рейтинг темы: голосов - 30, средняя оценка - 4.70
 Аватар для Максим1889
48 / 48 / 14
Регистрация: 25.03.2013
Сообщений: 835

Уменьшения разрешения изображений

23.07.2013, 20:27. Показов 6803. Ответов 61
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой скрипт загрузки изображений как сделать чтоб разрешение загружаемого изображения было уменьшено до
800 х 600.
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
<?php
if(!isset($_FILES['userfile']['tmp_name'])) die ('нет фаила?');
 
$uploaddir = 'gallery/'; //это папка, в которую будет загружаться картинка
$apend=date('YmdHis').rand(100,1000).'.jpg'; //новое имя изображения
$uploadfile = "$uploaddir$apend"; // в переменную $uploadfile будет входить папка и имя изображения
//Проверка расширений загружаемых изображений
if($_FILES['userfile']['size'] != 0 and $_FILES['userfile']['size']<=2048000) // Здесь мы проверяем размер если он более 1 МБ
{ 
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) // Здесь идет процесс загрузки изображения
{ 
$size = getimagesize($uploadfile); // с помощью этой функции мы можем получить размер пикселей изображения
if ($size[0] < 20000 && $size[1]<60010) // если размер изображения не более 600 пикселей по ширине и не более 5000 по высоте
{ 
echo "Файл загружен. Путь к файлу";
$query = "INSERT INTO `doska_photogallery` SET `name_pg`='$apend', `pos_pg`='$id', `PRIMARY KEY`='$text'";
$res = mysql_query($query);
}
else 
{
echo "Размер пикселей превышает допустимые нормы (ширина не более - 600 пикселей, высота не более 5000)"; 
unlink($uploadfile); // удаление файла
}
} 
else 
{
echo "Файл не загружен, верьнитель и попробуйте еще раз";
}
}
Добавлено через 2 часа 1 минуту
Ребят ну выручите кто-нибудь, а то я весь нет уже перерыл нарыл вот такю функцию, а ума ей дать не могу function ResizeImage

Добавлено через 23 часа 59 минут
Или это не реально, скажите чтобы я не мучился уже?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.07.2013, 20:27
Ответы с готовыми решениями:

Уменьшение разрешения, разных изображений
Есть такая проблема, если загрузить изображение, у которого сторона x короче стороны y, то всё нормально, а если наоборот, то после...

загрузка изображений относительно разрешения монитора
как можно реализовать загрузка изображений как на этом сайте http://funkyflick.com/ ,если масштабировать,то количество изображений...

Редактор изображений - уменьшение разрешения, обрезка
Доброго времени суток. Есть задание написать редактор изображений с минимум функций(win32). Функции типа сохранения,загрузки,открытия...

61
 Аватар для DanteLoL
5 / 6 / 2
Регистрация: 13.06.2013
Сообщений: 134
29.07.2013, 22:32
Студворк — интернет-сервис помощи студентам
вот тут а и гифы как то попали пока код отлаживал он ошибки выдавал..
Миниатюры
Уменьшения разрешения изображений  
0
 Аватар для DanteLoL
5 / 6 / 2
Регистрация: 13.06.2013
Сообщений: 134
30.07.2013, 09:09
и на некоторых файлах замочек стоит, как раз на тех которые на отображаются..
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
30.07.2013, 09:12
замочек - это как раз "вышедшие" из под скрипта - права доступа
0
 Аватар для DanteLoL
5 / 6 / 2
Регистрация: 13.06.2013
Сообщений: 134
06.08.2013, 11:41
KOPOJI, но замочек сейчас стоит на гифах которые непонятнокаким образом туда попали но не отображаются(
0
 Аватар для DanteLoL
5 / 6 / 2
Регистрация: 13.06.2013
Сообщений: 134
09.08.2013, 00:34
а как вам такое??? что скажите юзать можно?
0
 Аватар для DanteLoL
5 / 6 / 2
Регистрация: 13.06.2013
Сообщений: 134
18.08.2013, 11:53
Поглядел этот класс - он там переростает в целый Тулкит - эт для меня слишком много мне то всего лишь ресайз нужен) нашел вот это вот это вот класс находится в отдельном файле
вот он к стати
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
<?php
class SimpleImage 
{
    public $nativeimg;
    public $image;
    public $image_type;
 
    public function load($filename) 
    {
        $image_info = getimagesize($filename);
        $this->image_type = $image_info[2];
 
        if( $this->image_type == IMAGETYPE_JPEG ) 
        {
            $this->nativeimg = imagecreatefromjpeg($filename);
            if($this->getHeight() < $this->getWidth())
                $this->exifrotate($filename);
            return true;
        } 
        elseif( $this->image_type == IMAGETYPE_GIF ) 
        {
            $this->nativeimg = imagecreatefromgif($filename);
            return true;
        } 
        elseif( $this->image_type == IMAGETYPE_PNG ) 
        {
            $this->nativeimg = imagecreatefrompng($filename);
            return true;
        }
        else
            return false;
 
    }
 
    public function save($filename, $image_type=IMAGETYPE_JPEG, $compression=90, $owner=null, $permissions=null) 
    {
       if( $image_type == IMAGETYPE_JPEG ) 
        {
            imagejpeg($this->image,$filename,$compression);
        } 
 
        elseif( $image_type == IMAGETYPE_GIF ) 
        {
            imagegif($this->image,$filename);
        } 
        elseif( $image_type == IMAGETYPE_PNG ) 
        {
            imagepng($this->image,$filename);
        }
 
        if( $permissions != null) 
        {
            chown($filename, $permissions);
        }
 
        if( $permissions != null) 
        {
            chmod($filename, $owner);
        }
    }
 
    public function output($image_type=IMAGETYPE_JPEG) 
    {
        if( $image_type == IMAGETYPE_JPEG ) 
        {
            imagejpeg($this->image);
        } 
        elseif( $image_type == IMAGETYPE_GIF ) 
        {
            imagegif($this->image);
        } 
        elseif( $image_type == IMAGETYPE_PNG ) 
        {
            imagepng($this->image);
        }
    }
 
    public function getWidth() 
    {
        return imagesx($this->nativeimg);
    }
 
    public function getHeight() 
    {
        return imagesy($this->nativeimg);
    }
 
    public function resizeToHeight($height) 
    {
        $ratio = $height / $this->getHeight();
        $width = $this->getWidth() * $ratio;
        $this->resize($width,$height);
    }
 
    public function resizeToWidth($width) 
    {
        $ratio = $width / $this->getWidth();
        $height = $this->getheight() * $ratio;
        $this->resize($width,$height);
    }
 
    public function resampleToHeight($height) 
    {
        $ratio = $height / $this->getHeight();
        $width = $this->getWidth() * $ratio;
        $this->resample($width,$height);
    }
 
    public function resampleToWidth($width) 
    {
        $ratio = $width / $this->getWidth();
        $height = $this->getheight() * $ratio;
        $this->resample($width,$height);
    }
 
 
    public function scale($scale) 
    {
        $width = $this->getWidth() * $scale/100;
        $height = $this->getheight() * $scale/100;
        $this->resize($width,$height);
    }
 
    public function resize($width,$height) 
    {
        $new_image = imagecreatetruecolor($width, $height);
        imagecopyresized($new_image, $this->nativeimg, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
        $this->image = $new_image;
    }      
 
    public function resample($width,$height) 
    {
        $new_image = imagecreatetruecolor($width, $height);
        imagecopyresampled($new_image, $this->nativeimg, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
        $this->image = $new_image;
    }      
 
    public function sharpen($strenght = 18)
    {
        /*Less value in the middle means more sharpen*/
        $sharpen_matrix=array(  array(0, -1, 0),
                                array(-1, $strenght, -1),
                                array(0, -1, 0));
 
        $divisor=array_sum(array_map('array_sum', $sharpen_matrix));
        imageconvolution($this->image, $sharpen_matrix, $divisor, 0);
   }
 
    public function exifrotate($path)
    {
        if(function_exists('exif_read_data'))
        {
            $exif = exif_read_data($path);
            if(!empty($exif['Orientation'])) 
            {
                switch($exif['Orientation']) 
                {
                    case 8:
                        $this->nativeimg = imagerotate($this->nativeimg, 90, 0);
                        break;
                    case 3:
                        $this->nativeimg = imagerotate($this->nativeimg, 180, 0);
                        break;
                    case 6:
                        $this->nativeimg = imagerotate($this->nativeimg, -90, 0);
                        break;
                }
            }
        }
    }
}
?>
включаю его в начале документа вот так
PHP
1
include('class/imgresize.php');
и далее применяю вот так

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$uploaddir='coallogo/';//папка, куда будет загружаться картинка
 
 
$dato=time();
//пробуем сжать картинку
$filename = $_FILES['logotip']['name'];
if(preg_match('~\.(jpe?g|png|gif)$~i', $filename, $match))
    $format = '.' . ($match[1] == 'jpeg' ? 'jpg' : $match[1]);
 
//пробуем инициализировать класс
   $image = new SimpleImage();    //Инициируем экземпляр класса
   $image->load($_FILES['logotip']['name']);   //Загружаем фото (картинку)
   $image->resample(500,300);     //Изменяем размер со сглаживанием.
   $image->sharpen();             //Придаем резкость (не обязательно)
   $image->save('$uploaddir.$dato.$format');  //Сохраняем в файл
$logotip = $uploaddir.$dato.$format;
но в итоге выдает вот такое((

Warning: getimagesize(21068dbdd1c1.jpeg) [function.getimagesize]: failed to open stream: No such file or directory in C:\apache\localhost\www\class\imgresize. php on line 10

Warning: imagesx() expects parameter 1 to be resource, null given in C:\apache\localhost\www\class\imgresize. php on line 80

Warning: imagesy() expects parameter 1 to be resource, null given in C:\apache\localhost\www\class\imgresize. php on line 85

Warning: imagecopyresampled() expects parameter 2 to be resource, null given in C:\apache\localhost\www\class\imgresize. php on line 134

скажите плиз что не так(((??
0
 Аватар для Максим1889
48 / 48 / 14
Регистрация: 25.03.2013
Сообщений: 835
19.08.2013, 06:18  [ТС]
Тут уже ООП попахивает
0
 Аватар для DanteLoL
5 / 6 / 2
Регистрация: 13.06.2013
Сообщений: 134
19.08.2013, 09:54
Максим1889, да да только я с опп путаюсь постоянно вот тут похоже тоже что то навалял опять не так(
0
 Аватар для Максим1889
48 / 48 / 14
Регистрация: 25.03.2013
Сообщений: 835
19.08.2013, 09:56  [ТС]
Я вообще потерял тему, тебе что нужно сейчас разрешение изображения понизить, чтобы все форматы поддержавало?
0
 Аватар для DanteLoL
5 / 6 / 2
Регистрация: 13.06.2013
Сообщений: 134
19.08.2013, 10:03
Максим1889, да мне всего то надо универсальную функцию или клас что бы сжимал картинки до указанных размеров и главное что бы поддерживал гиф пинг и жпг и что бы формат после сжатия не менялся)

Добавлено через 1 минуту
Но вот к сожалению функция KOPOJI'Я у меня не очень безупречно работает вот и ищу другую альтернативу)
0
19.08.2013, 10:45

Не по теме:

я не знаю, что вы с ней намудрили. У меня эта функция уже больше полугода висит на двух проектах, проблем с ней нет (кроме нехватки памяти при работе с большими изображениями, больше 7 мегабайт). Причем, помимо простого ресайза, там еще накладывается водяная метка. Но это проблема в размере оперативной памяти на хостинге, а не в функции.

0
 Аватар для DanteLoL
5 / 6 / 2
Регистрация: 13.06.2013
Сообщений: 134
19.08.2013, 11:40
KOPOJI, не функция хорошая как часы работает просто с поим псевдокодом не контачит а разбираться в чем проблема уже замучался((

Добавлено через 19 секунд
вот по этому и этот класс нашел и ввернул
0
 Аватар для Максим1889
48 / 48 / 14
Регистрация: 25.03.2013
Сообщений: 835
19.08.2013, 11:45  [ТС]
Было бы здорово увидеть работающий псевдокод у меня тоже жпг только грузит. Остальные форматы я просто ограничил
0
 Аватар для DanteLoL
5 / 6 / 2
Регистрация: 13.06.2013
Сообщений: 134
19.08.2013, 12:32
Ага вот заменил $_FILES['logotip']['name']; на $_FILES['logotip']['tmp_name']; и теперь ошибки пропали но выдает вот такое Notice: Undefined variable: format in C:\apache\localhost\www\creationcoal.php on line 66

Добавлено через 1 минуту
не давайте не будем обсуждать мою криворукость благодаря которой работающие функции становятся полурабочими) а оратимся к "
Цитата Сообщение от DanteLoL Посмотреть сообщение
Notice: Undefined variable: format in C:\apache\localhost\www\creationcoal.php on line 66
))

Добавлено через 31 минуту
Цитата Сообщение от DanteLoL Посмотреть сообщение
$image->save('$uploaddir.$dato.$format')
все разобрался опять дебильная ошибка - ведь в апосфорах переменные интерпритируются как строка без подставления значений)) но созрел другой вопрос - этот класс при сжимании Гифа не сохраняет анимацию - возможное сжатие с сохранением анимации??
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
19.08.2013, 12:56
http://imageresize.w.pw/
2
 Аватар для DanteLoL
5 / 6 / 2
Регистрация: 13.06.2013
Сообщений: 134
19.08.2013, 13:08
KOPOJI, ок) спасибо) думаю сейчас все заработает - вот только поиграю в FF12 что бы мозг прочитсялся а то с бодуна голова кипит
0
19.08.2013, 13:21  [ТС]

Не по теме:

Цитата Сообщение от DanteLoL Посмотреть сообщение
вот только поиграю в FF12 что бы мозг прочитсялся а то с бодуна голова кипит
Ахаха

0
 Аватар для DanteLoL
5 / 6 / 2
Регистрация: 13.06.2013
Сообщений: 134
19.08.2013, 21:28
Максим1889, да очень плохая примета сонным с похмелья код писать) очень плохая сам потом удивляешся тому какую поэму накалякал) к статиKOPOJI, волшебно! все заработало та цункция из примера 100% рабочая) но единственный момент пработало пока не изменил один участок вот так
PHP
1
2
3
4
5
6
if (false !== (imageResize($filename, $filename, 600, 500))) {
 
                  } else {
                     echo "<html><head><meta http-equiv='Refresh' content='2; URL=page.php?id=".$id."'></head><body>Ошибка при загрузке. Возможно, неверный тип файла? Вы будете перемещены через 2 сек. Если не хотите ждать, то <a href='page.php?id=".$id."'>нажмите сюда.</a></body></html>";
                die();
                }
почему то Фолс выдает не смотря ниначто! (до этого все орбило изменил только это..
0
19.08.2013, 21:44

Не по теме:

Цитата Сообщение от DanteLoL Посмотреть сообщение
вот только поиграю в FF12 что бы мозг прочитсялся а то с бодуна голова кипит
Цитата Сообщение от DanteLoL Посмотреть сообщение
почему то Фолс выдает не смотря ниначто! (до этого все орбило изменил только это
поиграйте еще..

0
 Аватар для DanteLoL
5 / 6 / 2
Регистрация: 13.06.2013
Сообщений: 134
19.08.2013, 21:58
Цитата Сообщение от KOPOJI Посмотреть сообщение
поиграйте еще..
хаха вот я и сел) но чето мне там василиск навалял (оказался уровнем выше) вот я и вернулся дописать хаха) так как может такое быть то?

Добавлено через 12 минут
и вот так уже поставил все то же(
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if( !empty($_FILES['uploadfile']) && is_array($_FILES['uploadfile']))
{
        if( false !== ($filename = imageUpload($_FILES['uploadfile'])) ){
 
                 if (imageResize($filename, $filename, 600, 500)) {
 
                  } else {
                     echo "<html><head><meta http-equiv='Refresh' content='2; URL=page.php?id=".$id."'></head><body>Ошибка при загрузке. Возможно, неверный тип файла? Вы будете перемещены через 2 сек. Если не хотите ждать, то <a href='page.php?id=".$id."'>нажмите сюда.</a></body></html>";
                die();
                }
        }
 
 
}
else 
{
$filename = ' ';//если переменной не существует  
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.08.2013, 21:58

Загрузка изображений из разных папок в зависимости от разрешения экрана
Доброго времени суток! Большая просьба: может, кто сталкивался... Есть необходимость динамической загрузки изображений с одинаковыми...

Нужно исправить ошибки в программе по изменению разрешения .bmp изображений
Программа должна изменить разрешение бмп файла просто продублировав пиксли k-раз. Была фотография 1х1 если коэффициент 10 должна стать...

Низкочастотная фильтрация изображений (книга Гонсалеса “Цифровая обработка изображений”)
Здравствуйте. Я пытаюсь реализовать на java низкочастотную фильтрацию изображений. Реализую по книге Гонсалеса &quot;Цифровая...

Кодирование изображений и их защита файлов изображений от несанкционированного доступа
Нужны мысли, исходники программ по поводу этой темы. Примерный алгоритм действий есть: Кодирование: Разбить изображение на...

Смена изображений при обновлении страницы. Адаптивность изображений
Здравствуйте! Нашел скрипт, который изменяет изображение при обновлении страницы, он меня устраивает, но не могу понять, каким образом в...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru