Форум программистов, компьютерный форум, киберфорум
Alex_pac
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

php класс загрузки изображений

Запись от Alex_pac размещена 22.05.2012 в 03:10
Показов 4676 Комментарии 0
Метки php

статический класс уменьшения и конверсии изображений в JPEG

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
<?php
 
// php image resize static class
class Rimage {
 
protected function __construct() { }
 
static $max_size = 110; # максимально допустимый размер (по ширине/высоте) уменьшенной картинки
 
static function resize($path1,$path2) {
$params = getimagesize($path1); 
# в зависимости от типа оригинальной картинки применяем соответствующую функцию для считывания и создания изображения с которым будем работать
switch ( $params[2] ) {
  case 1: $source = imagecreatefromgif($path1); break;
  case 2: $source = imagecreatefromjpeg($path1); break;
  case 3: $source = imagecreatefrompng($path1); break;
}
# если ширина или высота оригинальной картинки больше ограничения производим вычисления
if ( $params[0]>self::$max_size || $params[1]>self::$max_size ) {
  # выбираем большее: ширины или высота оригинальной картинки
  if ( $params[0]>$params[1] ) $size = $params[0]; # ширина
  else $size = $params[1]; # высота
  # используя нехитрую пропорцию вычислям ширину и высоту уменьшенной картинки
  $resource_width = floor($params[0] * self::$max_size / $size);
  $resource_height = floor($params[1] * self::$max_size / $size);
  # создание "подкладки"
  $resource = imagecreatetruecolor($resource_width, $resource_height);
  # изменение размера и копирование полученного на "подкладку"
  imagecopyresampled($resource, $source, 0, 0, 0, 0, $resource_width, $resource_height, $params[0], $params[1]);
}
# если изменять размер не надо просто присваиваем переменной $resource идентификатор оригинальной картинки
else $resource = $source;
imagejpeg($resource,$path2);
unset($resource);
unset($source);
}
 
static function resolution($path) { // строка разрешения изображения
    $size=getimagesize($path);
    return $size[0].'x'.$size[1];
}
 
static function png2jpg($originalFile, $outputFile, $quality = 80) {
    $size=getimagesize($originalFile);
    $image = imagecreatetruecolor($size[0],$size[1]);
    $c=imagecolorallocate($image,255,255,255); // white
    imagefilledrectangle($image,0,0,$size[0],$size[1],$c);
    $image1 = imagecreatefrompng($originalFile);
    imagecopyresampled($image,$image1, 0, 0, 0, 0,$size[0], $size[1],$size[0],$size[1]);  
    imagejpeg($image, $outputFile, $quality);
    imagedestroy($image1);
    imagedestroy($image);
}
 
} // end class
неполный класс загрузки файлов (только функция для изображений, остальные сами напишите)

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
<?php
 
// класс загрузки файлов 
 
class upload {
 
protected function __construct() { }
 
static $save_path = 'uploads/';
static $error = '';
 
static function saveimg($name,$max_mb = 2,$exts = 'jpg|png|jpeg|gif') {
    if (isset($_FILES[$name])) {
        $f = &$_FILES[$name];
        if (($f['size'] <= $max_mb*1024*1024) && ($f['size'] > 0)) {
            if (
                (preg_match('/\.('.$exts.')$/i',$f['name'],$ext))&&
                (preg_match('/image/i',$f['type']))
            ) {
                $ext[1] = strtolower($ext[1]);
                $fn = uniqid('f_',true).'.'.$ext[1];
                $fn2 = uniqid('f_',true).'.jpg';
                if (move_uploaded_file($f['tmp_name'], self::$save_path . $fn)) {
                    // система изменения размера , требуется Rimage
                    Rimage::resize(self::$save_path . $fn, self::$save_path . $fn2);
                    @unlink(self::$save_path . $fn); // удаление файла
                    return self::$save_path . $fn2;
                } else {
                    self::$error = 'Ошибка загрузки файла';
                }
            } else {
                self::$error = 'Неверный тип файла. Допустимые типы : <b>'.$exts.'</b>';
            }
        } else {
            self::$error = 'Неверный размер файла. Максимальный размер файла <b>'.$max_mb.' МБ</b>';
        }
    } else {
        self::$error = 'Файл не найден';
    }
    return false;
} // end saveimg
 
} // end class
приминение сабжа

PHP
1
2
3
4
5
6
7
8
9
10
<?php
 
include('Rimage.php');
include('upload.php');
 
if ($file = upload::saveimg('filename')) {
echo 'Файл загружен <a href="'.$file.'">'.$file.'</a>';
} else {
echo upload::$error;
}
Метки php
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru