Как сделать сжатие изображений? 1.X

 
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 958
Как сделать такое на первой ветке:
Юзер загружает в статью изображение 7000х4000 и весом 15мб, при загрузке система приводит вес и размер по принципу "не больше такого-то веса и размера"?
Что-то нигде не нашел решения.
Все идет хорошо, только мимо...
Web-Studio «PAL»
БЕСПЛАТНАЯ РАСКРУТКА САЙТОВ
Посетитель
small user social cms
Почетный донор проектаМедальПочетный донор проекта
Сообщений: 211
Олег с клещами, имеете ввиду прикреплённое изображение или вставленное через редактор в тело статьи?
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 129
$path2=PATH.'конечный путь.'.jpg';
$path3=PATH.'уменьшенная копия.'.jpg';
$size=GetImageSize ($path2);//Создаём новое изображение из «старого»
$src=ImageCreateFromJPEG ($path2);//Берём числовое значение ширины фотографии, которое мы получили в первой строке и записываем это число в переменную
$iw=$size[0];//Проделываем ту же операцию, что и в предыдущей строке, но только уже с высотой.
$ih=$size[1];//Ширину фотографии делим на 200 т.к. на выходе мы хотим получить фото шириной в 200 пикселей. В результате получаем коэфициент соотношения ширины оригинала с будущей превьюшкой.
$koe=$iw/200;//Делим высоту изображения на коэфициент, полученный в предыдущей строке, и округляем число до целого в большую сторону — в результате получаем высоту нового изображения.
$new_h=ceil ($ih/$koe);//Создаём пустое изображение шириной в 200 пикселей и высотой, которую мы вычислили в предыдущей строке.
$dst=ImageCreateTrueColor (200, $new_h);//Данная функция копирует прямоугольную часть изображения в другое изображение, плавно интерполируя пикселные значения таким образом, что, в частности, уменьшение размера изображения сохранит его чёткость и яркость.
ImageCopyResampled ($dst, $src, 0, 0, 0, 0, 200, $new_h, $iw, $ih);//Сохраняем полученное изображение в формате JPG
ImageJPEG ($dst, $path3, 60);
imagedestroy($src);

Решение подсмотрел на каком то форуме.
Редактировалось: 3 раз (Последний: 6 ноября 2019 в 21:45)
Посетитель
small user social cms
Медаль
Сообщений: 119
Олег с клещами, вы немножко лукавите. PHP ограничивает, то что загружается. Проверить это можно так:
Код PHP:
  1. <?php
  2. echo 'Максимальный размер загружаемого файла : '.ini_get('upload_max_filesize')."\n";
  3. echo 'Максимальный объём загружаемых данных : '.ini_get('post_max_size')."\n";
  4.  
Если объём уже загруженных файлов не гигабайты, то как вариант можно сделать автономный скрипт, который будет обходить папки с файлами и уменьшать размер слишком больших по алгоритму, аналогичному предложенному @chameleon9. Но этот скрипт будет перезаписывать существующее изображение и не создавать нового. Запускаться по cron.
+ -- никакого вторжения в код движка.
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 958
@IamB:

Олег с клещами, вы немножко лукавите. PHP ограничивает, то что загружается. Проверить это можно так:
Код PHP:
  1.  
  2.  

Вот насчёт скрипта - хорошее дело. Кто бы написал?
А насчёт ограничений php -нехорошее дело, т.к. эти ограничения должны быть только для юзеров.
Все идет хорошо, только мимо...
Web-Studio «PAL»
БЕСПЛАТНАЯ РАСКРУТКА САЙТОВ
Посетитель
small user social cms
Почетный донор проектаМедальПочетный донор проекта
Сообщений: 211
Олег с клещами, может это поможет
Посетитель
small user social cms
Медаль
Сообщений: 119
Олег с клещами:
А насчёт ограничений php -нехорошее дело, т.к. эти ограничения должны быть только для юзеров.
Когда PHP подключён как модуль Apache, то можно пробовать использовать директивы htaccess
Код HTACCESS:
  1.  
  2. php_value upload_max_filesize 10M
  3. php_value post_max_size 40M
  4.  
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.