Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
 
2 / 2 / 0
Регистрация: 05.07.2019
Сообщений: 56
1

Обработка картинки функцией getimagesize, задание пути к файлу для её работы (работы функции)

12.10.2019, 00:02. Просмотров 276. Ответов 1

Здравствуйте. Я создаю сайт. Мне нужно сделать так, чтобы пользователи могли загружать туда картинки любого размера (Ширины и Высоты), после чего они (картинки) автоматически подгонялись под размеры, установленные на сайте. Картинки загружаются на сервер, в базу данных - пути к этим картинкам. Загрузка на сервер картинок и путей в базу данных работают замечательно.

Как в этом случае работать с функцией getimagesize? Как задаётся путь для этой функции? Примеров в интернете много, но я только нашёл те, в которых работа производится непосредственно с картинками, находящимися в базе данных.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2019, 00:02
Ответы с готовыми решениями:

Задание пути к файлу
Приветствую... Подскажите такой вопрос. У меня из-под экселя открывается определенный файл...

Правильное задание пути к файлу
Форумчане, доброго времени суток! Прошу помочь решить проблему.Есть код(ы) слепленный мной из...

Задание пути к текстовому файлу
Здравствуйте. Передо мной стоит такая задача - нужно создать программу, которая запрашивала бы путь...

Как указать путь к файлу для работы
Работаю с xml файлом, app.xml, лежит в каталоге с проектом в папке App_Data. Для работы приходится...

1
87 / 65 / 24
Регистрация: 12.10.2019
Сообщений: 224
12.10.2019, 18:08 2
У меня на сайтах вот такая функция работает

работала на php5.x сейчас на php7.3

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
function GrateThumbImages($path_papka,$name_file,$thumb_papka='/thumb'){
    global $y_im_thumb,$x_im_thumb,$im_thumb_xy,$q_zip;
    if(strlen($thumb_papka)<10) $thumb_papka=$path_papka.$thumb_papka;
    $content=20;
    if (empty($q_zip)) $q_zip=90;
    # chmod($path_papka."/$name_file.jpg",'0777');
    if(!is_dir($thumb_papka)){
      if(is_writeable(dirname($thumb_papka))){
          mkdir($thumb_papka,0777);
          $content=0;
        } else {echo "<h3>$filename Error: NOT is_writeable failed <b>$thumb_papka</b>".__LINE__.".</h3>";}
    }
    $name_file_ext = pathinfo($path_papka."/$name_file", PATHINFO_EXTENSION);
    if($name_file_ext=="jpg") $im = ImageCreateFromJPEG ($path_papka."/$name_file");
    elseif($name_file_ext=="png") $im = ImageCreateFromPNG ($path_papka."/$name_file");
    elseif($name_file_ext=="gif") $im = ImageCreateFromGIF ($path_papka."/$name_file");
    $sx=imagesx($im);
    $sy=imagesy($im);$ratio=1;
    $dx=0; $dy=0;$dXt=0;$dYt=0;$storona='';
    if(!empty($im_thumb_xy) && $im_thumb_xy==1){#константа y
        $x_size= round($sx*$y_im_thumb/$sy);
        $y_size=$y_im_thumb;
    } elseif(isset($im_thumb_xy) && $im_thumb_xy===0) {
        $x_size=$x_im_thumb;
        $y_size= round($sy*$x_im_thumb/$sx);
    } elseif(!empty($im_thumb_xy) && $im_thumb_xy==2){#Вписывание одной стороны, вторая обрезается
      if($sx>$x_im_thumb && $sy>$y_im_thumb){
          if($sx/$x_im_thumb<$sy/$y_im_thumb){
              $ratio = $x_im_thumb/$sx;
              $storona='x';
            } else {
              $ratio = $y_im_thumb/$sy;
              $storona='y';
            }
        } else  { //Тхумб меньше по размеру - Вписывание
          $ratio = ($x_im_thumb/$sx<$y_im_thumb/$sy)?$x_im_thumb/$sx:$y_im_thumb/$sy;
        }
      $x_size =$x_im_thumb; $x_scale_size=ceil($sx*$ratio);
      $y_size =$y_im_thumb;  $y_scale_size=ceil($sy*$ratio);
      $dx = ($storona=='y')?floor(($sx-$x_im_thumb/$ratio)/2):0;
      $dy = ($storona=='x')?floor(($sy-$y_im_thumb/$ratio)/2):0;
      $sx=$sx-$dx*2; $sy=$sy-$dy*2;
      $dXt =0;
      $dYt =0;
    } else {//Вписывание в фиксированный размер
      if($sx>$x_im_thumb && $sy>$y_im_thumb){
          $ratio = $sx/$x_im_thumb>$sy/$y_im_thumb?$x_im_thumb/$sx:$y_im_thumb/$sy;
        } else {
          $ratio = $x_im_thumb/$sx<$y_im_thumb/$sy?$x_im_thumb/$sx:$y_im_thumb/$sy;
        }
      $x_size = ceil($sx*$ratio);
      $y_size = ceil($sy*$ratio);
    }
    $im_out = ImageCreateTrueColor($x_size, $y_size);
    if($name_file_ext=="png") { // Сохранение прозрачности для PNG
      imageAlphaBlending($im_out, false);
      imageSaveAlpha($im_out, true);
    }
    ImageCopyResampled($im_out, $im, $dXt, $dYt, $dx, $dy, $x_size, $y_size, $sx, $sy);
    if($name_file_ext=="jpg") ImageJPEG($im_out,$thumb_papka."/$name_file",$q_zip);
    elseif($name_file_ext=="png") ImagePNG($im_out,$thumb_papka."/$name_file");
    elseif($name_file_ext=="gif") ImageGIF($im_out,$thumb_papka."/$name_file");
    ImageDestroy($im);
    ImageDestroy($im_out);
    if(file_exists($thumb_papka."/$name_file")){
      $content=0;
    } else {
      echo "<h3>$filename thumbError: Файла нет <b>$thumb_papka/$name_file</b> ".__LINE__.".</h3>";
    }
    return $content;
}
Добавлено через 3 минуты
Задаются размеры, под которые надо подгонять картинку
$x_im_thumb
$y_im_thumb

затем по какой стороне подгонять
$im_thumb_xy
если по X, то 1
по стороне Y, то 0
по обоим сторонам 2

$q_zip - степень сжатия
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2019, 18:08

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Софт для совместной работы с функцией шаблона проекта
Добрый день! Мне нужен софт для планирования и контроля выполнения простых и однообразных...

Как прописать путь к файлу БД для работы на разных ПК
Пишу программу на C# с использование базы данных Microsoft Access. Как написать в коде путь к файлу...

Задание для дипломной работы
Добрый день столкнулся с некой проблемой, пишу дипломную работу на тему «Информационная...

Как указать путь к файлу pdf для работы на всех ПК
Доброго времени суток. Дело вот в чем, программа в ходе работы обращается к файлу шаблону .dbf....


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

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

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