Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95
#1

Что не так со скриптом? Ресайз картинок

23.01.2015, 23:33. Просмотров 528. Ответов 9
Метки нет (Все метки)

Нашел такой скрипт, вроде бы разобрался, но все равно не выводит изображение.. Подскажите в чем дело?
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
<?php
// f - имя файла
// type - способ масштабирования 
// q - качество сжатия 
// src - исходное изображение 
// dest - результирующее изображение 
// w - ширниа изображения 
// ratio - коэффициент пропорциональности 
// str - текстовая строка 
 
// тип преобразования, если не указаны размеры 
if ($type == 0) $w = 70;  // квадратная 70x70 
if ($type == 1) $w = 90;  // квадратная 90x90 
if ($type == 2) $w = 218; // пропорциональная шириной 218 
 
 
// качество jpeg по умолчанию 
if (!isset($q)) $q = 100;
 
// создаём исходное изображение на основе 
// исходного файла и опеределяем его размеры 
$src = imagecreatefromjpeg($f); // imagecreatefromjpeg возвращает ресурс, создает изображение
$w_src = imagesx($src); // определяемя ширину
$h_src = imagesy($src); // и высоту файла
 
header("Content-type: image/jpeg"); 
 
// если размер исходного изображения 
// отличается от требуемого размера 
if ($w_src != $w) 
{
// операции для получения прямоугольного файла 
   if ($type==2) 
   { 
       // вычисление пропорций. Dest - рузультирующее изображение
       $ratio = $w_src/$w; 
       $w_dest = round($w_src/$ratio); // round округляет по правилам округления 
       $h_dest = round($h_src/$ratio); 
 
       // создаём пустую картинку 
       // важно именно truecolor!, иначе будем иметь 8-битный результат 
       $dest = imagecreatetruecolor($w_dest,$h_dest); 
       $str = " что здесь должно быть?"; 
       imagecopyresized($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src); 
       // imagecopyresized() копирует прямоугольный участок одного изображения на другое изображение
    }
 
// операции для получения квадратного файла 
    if (($type==0)||($type==1)) 
    { 
         // создаём пустую квадратную картинку 
         // важно именно truecolor!, иначе будем иметь 8-битный результат 
         $dest = imagecreatetruecolor($w,$w); // создаем пустую картинку
 
         // вырезаем квадратную серединку по x, если фото горизонтальное 
         if ($w_src>$h_src) 
         imagecopyresized($dest, $src, 0, 0,
                          round((max($w_src,$h_src)-min($w_src,$h_src))/2),
                          0, $w, $w, min($w_src,$h_src), min($w_src,$h_src)); 
 
         // вырезаем квадратную верхушку по y, 
         // если фото вертикальное (хотя можно тоже серединку) 
         if ($w_src<$h_src) 
         imagecopyresized($dest, $src, 0, 0, 0, 0, $w, $w,
                          min($w_src,$h_src), min($w_src,$h_src)); 
 
         // квадратная картинка масштабируется без вырезок 
         if ($w_src==$h_src) 
         imagecopyresized($dest, $src, 0, 0, 0, 0, $w, $w, $w_src, $w_src); 
    } 
 
    // вывод картинки и очистка памяти 
    imagejpeg($dest,'',$q); 
    imagedestroy($dest); 
    imagedestroy($src); 
} 
imagecopyresized($dest, $src, 0, 0, 0, 0, $w,
                 $w, min($w_src,$h_src), min($w_src,$h_src)); 
 
 
?>
Вопрос, что должно быть в переменной $str ??
А вот так я передаю в него картинку. В папке вместе со скриптом лежит картинка image2.jpg
HTML5
1
2
3
4
5
6
7
8
9
<html>
<head>
<title></title>
</head>
<body>
<h3 align="center">Демонстрационный пример масштабирования картинок</h3>
<img src="resize.php?f=image2.jpg&t=1&w=90&s=0" border=0>
</body>
</html>
Добавлено через 4 часа 57 минут
ну с $str разобрался, но все равно нужна помощь! Почему скрипт не работает?

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2015, 23:33
Ответы с готовыми решениями:

Ресайз картинок
Привет! Можно ли средствами РНР изменять размеры картинок как есть, т.е., - ...

Ресайз картинок
На сайте выводятся картинки уменьшенного размера как я понял они как то...

Attache картинок к письму при рассылке скриптом, как правильно?
Добрый день! Делаем новостную рассылку на сайте, автоматически. Хотим...

Помогите со скриптом на PHP. Он работает, но не так как хотелось бы
Помогите со скриптом на PHP. Он работает,но не так как хотелось бы. Я только...

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

9
Вадим Мошев
^
204 / 35 / 14
Регистрация: 23.07.2014
Сообщений: 188
25.01.2015, 18:57 #2
Цитата Сообщение от Nbot Посмотреть сообщение
Почему скрипт не работает?
В чём это выражается? Что программа должна делать и происходит вместо этого?
____

Прежде всего я бы посоветовал поставить точки с запятой после некоторых операторов if, где у вас их НЕ стоит:
строки 46, 70, 76.

Попробуйте после этого проверить скрипт

Добавлено через 15 минут
Но это не всё.
Как я только что проверил, переменная $f, которая должна содержать имя файла - на самом деле пуста, поэтому, вместо того, чтобы работать, скрипт генерирует кучу ошибок.

Кликните здесь для просмотра всего текста
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: Filename cannot be empty in Z:\home\localhost\www\w.php on line 23

Warning: imagesx(): supplied argument is not a valid Image resource in Z:\home\localhost\www\w.php on line 24

Warning: imagesy(): supplied argument is not a valid Image resource in Z:\home\localhost\www\w.php on line 25

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\w.php:23) in Z:\home\localhost\www\w.php on line 27

Warning: imagecopyresized(): supplied argument is not a valid Image resource in Z:\home\localhost\www\w.php on line 70
яШяаJFIFяю
Warning: imagedestroy(): supplied argument is not a valid Image resource in Z:\home\localhost\www\w.php on line 76

Warning: imagecopyresized(): 2 is not a valid Image resource in Z:\home\localhost\www\w.php on line 79


Если в строке
PHP
1
$src = imagecreatefromjpeg($f); // imagecreatefromjpeg возвращает ресурс, создает изображение
прописать имя файла напрямую (вместо $f написать 'image2.jpg'), то сам скрипт заработает и будет выдавать картинку, если к нему обратиться через адресную строку браузера, но html не работает по-прежнему. Похоже, что вы неправильно обращаетесь к файлу скрипта.

Добавлено через 7 минут
Так, походу немного прояснилась ситуация. Дело в том, что вы неверно принимаете параметры в скрипте. Ведь вы их передаёте, как GET-параметры, но в скрипте их как GET-параметры не ловите.

ковыряю дальше
0
Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95
25.01.2015, 18:59  [ТС] #3
Цитата Сообщение от Вадим Мошев Посмотреть сообщение
но в скрипте их как GET-параметры не ловите.
таааак, теперь и я начал понимать, сейчас попробую принять верно
0
Вадим Мошев
^
204 / 35 / 14
Регистрация: 23.07.2014
Сообщений: 188
25.01.2015, 19:08 #4
Сообщите о результате
0
Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95
25.01.2015, 19:10  [ТС] #5
Вадим Мошев, не работает. Даже когда
Цитата Сообщение от Вадим Мошев Посмотреть сообщение
1
$src = imagecreatefromjpeg('image2.jpg');
не выводит картинку
0
Вадим Мошев
^
204 / 35 / 14
Регистрация: 23.07.2014
Сообщений: 188
25.01.2015, 19:20 #6
Цитата Сообщение от Nbot Посмотреть сообщение
1
$src = imagecreatefromjpeg('image2.jpg');
Это что? Так, конечно, он не будет работать. Что за единица?
_______

Короче, вот вам скрипт и код ХТМЛ, здесь всё работает, хотя ни t, ни w, ни s в скрипт не передаются, видать, ему и без них хорошо
(хтмл ваш, я его не менял)
HTML5
1
2
3
4
5
6
7
8
9
10
<html>
<head>
<title></title>
</head>
<body>
<h3 align="center">Демонстрационный пример масштабирования картинок</h3>
<img src="resize.php?f=image2.jpg&t=1&w=90&s=0" border=0>
<!---->
</body>
</html>
и скрипт:
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
<?php
// f - имя файла
// type - способ масштабирования 
// q - качество сжатия 
// src - исходное изображение 
// dest - результирующее изображение 
// w - ширниа изображения 
// ratio - коэффициент пропорциональности 
// str - текстовая строка 
 
// тип преобразования, если не указаны размеры 
if ($type == 0) $w = 70;  // квадратная 70x70 
if ($type == 1) $w = 90;  // квадратная 90x90 
if ($type == 2) $w = 218; // пропорциональная шириной 218 
 
 
// качество jpeg по умолчанию 
if (!isset($q)) $q = 100;
 
// создаём исходное изображение на основе 
// исходного файла и опеределяем его размеры
//die('55555555555555555      ' . $f);
$f = $_GET['f']; //ОБРАТИТЕ ВНИМАНИЕ НА ЭТУ СТРОЧКУ! ЭТО ПОЛУЧЕНИЕ ГЕТ-ПАРАМЕТРА, О КОТОРОМ Я ГОВОРИЛ
//die('AFRICA  ' . $f); 
$src = imagecreatefromjpeg($f); // imagecreatefromjpeg возвращает ресурс, создает изображение
$w_src = imagesx($src); // определяемя ширину
$h_src = imagesy($src); // и высоту файла
 
header("Content-type: image/jpeg"); 
 
// если размер исходного изображения 
// отличается от требуемого размера 
if ($w_src != $w) 
{
// операции для получения прямоугольного файла 
   if ($type==2) 
   { 
       // вычисление пропорций. Dest - рузультирующее изображение
       $ratio = $w_src/$w; 
       $w_dest = round($w_src/$ratio); // round округляет по правилам округления 
       $h_dest = round($h_src/$ratio); 
 
       // создаём пустую картинку 
       // важно именно truecolor!, иначе будем иметь 8-битный результат 
       $dest = imagecreatetruecolor($w_dest,$h_dest); 
       $str = " что здесь должно быть?"; 
       imagecopyresized($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src); 
       // imagecopyresized() копирует прямоугольный участок одного изображения на другое изображение
    };
 
// операции для получения квадратного файла 
    if (($type==0)||($type==1)) 
    { 
         // создаём пустую квадратную картинку 
         // важно именно truecolor!, иначе будем иметь 8-битный результат 
         $dest = imagecreatetruecolor($w,$w); // создаем пустую картинку
 
         // вырезаем квадратную серединку по x, если фото горизонтальное 
         if ($w_src>$h_src) 
         imagecopyresized($dest, $src, 0, 0,
                          round((max($w_src,$h_src)-min($w_src,$h_src))/2),
                          0, $w, $w, min($w_src,$h_src), min($w_src,$h_src)); 
 
         // вырезаем квадратную верхушку по y, 
         // если фото вертикальное (хотя можно тоже серединку) 
         if ($w_src<$h_src) 
         imagecopyresized($dest, $src, 0, 0, 0, 0, $w, $w,
                          min($w_src,$h_src), min($w_src,$h_src)); 
 
         // квадратная картинка масштабируется без вырезок 
         if ($w_src==$h_src) 
         imagecopyresized($dest, $src, 0, 0, 0, 0, $w, $w, $w_src, $w_src); 
    };
 
    // вывод картинки и очистка памяти 
    imagejpeg($dest,'',$q); 
    imagedestroy($dest); 
    imagedestroy($src); 
}; 
imagecopyresized($dest, $src, 0, 0, 0, 0, $w,
                 $w, min($w_src,$h_src), min($w_src,$h_src)); 
 
 
?>
0
Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95
25.01.2015, 19:27  [ТС] #7
Вадим Мошев, не работает. Я готов смириться, что руки у меня растут из задницы, но когда даже после тупого ctrl+c ctrl+v не работает..
В той статье автор писал, что должен быть настроен сервер. Я смотрел, и кажется все правильно. Посмотрю еще, что ли.
Спасибо за помощь!
0
Вадим Мошев
^
204 / 35 / 14
Регистрация: 23.07.2014
Сообщений: 188
25.01.2015, 19:32 #8
Попробуйте взять из архива, что я для вас закачал

www.rar
0
Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95
25.01.2015, 20:08  [ТС] #9
Вадим Мошев, nope :/ не работает
0
Вадим Мошев
^
204 / 35 / 14
Регистрация: 23.07.2014
Сообщений: 188
25.01.2015, 21:09 #10
Nbot, Скачайте себе Denwer, там просмотрите работу.
0
25.01.2015, 21:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2015, 21:09

Какова вероятность, что id, генерируемый этим скриптом совпадёт?
function gen_id($number) { $arr =...

Что-то со скриптом не так?
Надо чтобы при наведении на кнопку появлялась картинка в теге &lt;img&gt;, как...

Что не так с этим скриптом?
&lt;?function get_content($hostname, $path) { $line=&quot;&quot;; //станавливаем...


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

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

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