Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95

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

23.01.2015, 23:33. Показов 1129. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.01.2015, 23:33
Ответы с готовыми решениями:

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

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

Посмотрите что не так со скриптом
Задача сделать представление: Врач, количество пациентов за год, лечение которых закончилось успешно, общее количество пациентов за год. ...

9
^
 Аватар для Вадим Мошев
425 / 50 / 16
Регистрация: 23.07.2014
Сообщений: 301
25.01.2015, 18:57
Цитата Сообщение от 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  [ТС]
Цитата Сообщение от Вадим Мошев Посмотреть сообщение
но в скрипте их как GET-параметры не ловите.
таааак, теперь и я начал понимать, сейчас попробую принять верно
0
^
 Аватар для Вадим Мошев
425 / 50 / 16
Регистрация: 23.07.2014
Сообщений: 301
25.01.2015, 19:08
Сообщите о результате
0
 Аватар для Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95
25.01.2015, 19:10  [ТС]
Вадим Мошев, не работает. Даже когда
Цитата Сообщение от Вадим Мошев Посмотреть сообщение
1
$src = imagecreatefromjpeg('image2.jpg');
не выводит картинку
0
^
 Аватар для Вадим Мошев
425 / 50 / 16
Регистрация: 23.07.2014
Сообщений: 301
25.01.2015, 19:20
Цитата Сообщение от 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  [ТС]
Вадим Мошев, не работает. Я готов смириться, что руки у меня растут из задницы, но когда даже после тупого ctrl+c ctrl+v не работает..
В той статье автор писал, что должен быть настроен сервер. Я смотрел, и кажется все правильно. Посмотрю еще, что ли.
Спасибо за помощь!
0
^
 Аватар для Вадим Мошев
425 / 50 / 16
Регистрация: 23.07.2014
Сообщений: 301
25.01.2015, 19:32
Попробуйте взять из архива, что я для вас закачал

www.rar
0
 Аватар для Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95
25.01.2015, 20:08  [ТС]
Вадим Мошев, nope :/ не работает
0
^
 Аватар для Вадим Мошев
425 / 50 / 16
Регистрация: 23.07.2014
Сообщений: 301
25.01.2015, 21:09
Nbot, Скачайте себе Denwer, там просмотрите работу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.01.2015, 21:09
Помогаю со студенческими работами здесь

Подскажите что не так со скриптом
Привет программисты. Имеется такой скрипт: &lt;script type=&quot;text/javascript&quot;&gt; $(document).ready(function(){var hs = $('ul.hide_fifteen'); ...

Пожалуйста подскажите что не так со скриптом PowerShell!
Get-Content -Path C:\Users\Администратор\Desktop\u.csv | Unlock-ADAccount -Identity {$_} | If({$_} -eq NULL) {Write-Host {$_} &quot;Учетной...

Ресайз картинок
На сайте выводятся картинки уменьшенного размера как я понял они как то уменьшаются, вот код который выводит картинки &lt;?php ...

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

Ресайз картинок
Всем привет!!! Такая задачка: В указанной папке через фолдеропен всем имеющимся картинкам изменить разрешение. У Памирыча нашел код...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru