Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
3 / 3 / 0
Регистрация: 20.11.2010
Сообщений: 60

Какой код добавить, чтобы появилась возможность скачивания картинки разными размерами?

05.12.2010, 14:44. Показов 2724. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
какой код необходимо добавить чтобы появилась возможность скачивания картинки разными размерами?


PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php 
 
$db = mysql_connect("localhost", "people", "laco");
mysql_select_db("zaychik",$db);
 
$result = mysql_query("SELECT file_name FROM files WHERE id=102");
$myrow = mysql_fetch_array($result);
$file_name = $myrow['file_name'];
echo "<br/><br/><img src=http://localhost/zaychik/files/$file_name><a/><br/>";
echo "<a href=http://localhost/zaychik/files/$file_name>Скачать!<a/><br/>";
 
?>
совсем запутался, не получается ничего(
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.12.2010, 14:44
Ответы с готовыми решениями:

Сделать возможность скачивания картинки разными размерами, а не только оригиналом
как сделать возможность скачивания картинки разными размерами, а не только оригиналом? как на сайтах встречается выбор, например...

Как добавить картинки с разными размерами в Corel Draw x5 , чтобы все были одинаковые?
Всем привет! Проблема такая , есть несколько картинок с разными размерами и разрешениями , а мне они нужны все в одиноковой длине и...

Модифицировать код так, чтобы появилась возможность его запустить
Помоги запустить в консольном предложени в с# бинарный поиск вот этот код: /* Номер первого элемента в массиве */ size_t first =...

13
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.12.2010, 14:57
Изменить размер исходной картинки и выдать ее в поток можно с помощью библиотеки GD.
Либо найдите готовый скрипт.
0
3 / 3 / 0
Регистрация: 20.11.2010
Сообщений: 60
05.12.2010, 15:48  [ТС]
скрипты находил, не работают почему-то, либо я что-то не так делал...
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.12.2010, 16:07
Цитата Сообщение от Brajt Посмотреть сообщение
скрипты находил, не работают почему-то, либо я что-то не так делал...
То есть вариант почитать и научиться чему-то новому даже не рассматривается?

Не по теме:

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

0
3 / 3 / 0
Регистрация: 20.11.2010
Сообщений: 60
05.12.2010, 16:16  [ТС]
рассматривается. неделю толкусь на одном месте с библиотекой, imagecopyresized, getimagesize, imagecopyresampled и т.д.
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.12.2010, 16:35
Цитата Сообщение от Brajt Посмотреть сообщение
рассматривается. неделю толкусь на одном месте с библиотекой, imagecopyresized, getimagesize, imagecopyresampled и т.д.
Отлично. Покажите, каким кодом располагаете на данный момент (тот код, что в начальном посте, не считается), и расскажите, какие проблемы возникают.
Кроме того, как вы реализовали интерфейс пользователя, где он может выбрать размер скачиваемой картинки?
0
3 / 3 / 0
Регистрация: 20.11.2010
Сообщений: 60
05.12.2010, 16:43  [ТС]
Цитата Сообщение от ostgals Посмотреть сообщение
Отлично. Покажите, каким кодом располагаете на данный момент (тот код, что в начальном посте, не считается), и расскажите, какие проблемы возникают.
Кроме того, как вы реализовали интерфейс пользователя, где он может выбрать размер скачиваемой картинки?
например на данный момент код
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
<?php 
 
$db = mysql_connect("localhost", "people", "laco");
mysql_select_db("zaychik",$db);
 
$result = mysql_query("SELECT file_name FROM files WHERE id=102");
$myrow = mysql_fetch_array($result);
$file_name = $myrow['file_name'];
 
echo "<br/><br/><img src=http://localhost/zaychik/files/$file_name><a/><br/>";
echo "<a href=http://localhost/zaychik/files/$file_name>Скачать!<a/><br/>";
echo "$file_name";
$img = 'files/$file_name';
echo "$img";
 
// Set a maximum height and width
$width = 200;
$height = 200;
 
// Content type
header('Content-type: image/jpeg');
 
// Get new dimensions
list($width_orig, $height_orig) = getimagesize($img);
 
$ratio_orig = $width_orig/$height_orig;
 
if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}
 
// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($img);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
 
// Output
imagejpeg($image_p, null, 100);
 
?>
- нашел пример на каком-то сайте, но я не понимаю его. не понимаю что именно заносить в переменную $img, не понимаю почему строка / Content type
header('Content-type: image/jpeg'); выдает ошибку "Warning: Cannot modify header information - headers already sent by" (пробовал ставить ее в начало скрипта - не помогло). а ниже по коду и думать боюсь
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.12.2010, 17:24
Совсем другое дело - теперь проблема четко видна.

Ошибка в том, что для скачивания уменьшенной картинки на странице следует прописать ссылку на отдельный скрипт, который будет уменьшать оригинальное изображение и выдавать его в поток. (То есть, чуществующий скрипт разибивается на два.) Назовите этот скрипт, к примеру, download.php. Тогда страница со ссылкой на скачивания:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php 
 
$db = mysql_connect("localhost", "people", "laco");
mysql_select_db("zaychik",$db);
 
$result = mysql_query("SELECT file_name FROM files WHERE id=102");
$myrow = mysql_fetch_array($result);
$file_name = $myrow['file_name'];
 
echo "<br/><br/><img src=http://localhost/zaychik/files/$file_name><a/><br/>";
echo "<a href=http://localhost/zaychik/files/$file_name>Скачать!<a/><br/>";
echo "<a href=\"download.php?image=$file_name\">Скачать в уменьшенном размере!</a>";
 
echo "$file_name";
$img = 'files/$file_name';
echo "$img";
 
?>
А сам скрипт download.php:

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
<?php // download.php
 
$img = 'files/'.$_GET['image']; // получаем имя файла оригинальной картинки
 
// Set a maximum height and width
$width = 200;
$height = 200;
 
// Content type
header('Content-type: image/jpeg');
 
// Get new dimensions
list($width_orig, $height_orig) = getimagesize($img);
 
$ratio_orig = $width_orig/$height_orig;
 
if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}
 
// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($img);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
 
// Output
imagejpeg($image_p, null, 100);
 
?>
0
3 / 3 / 0
Регистрация: 20.11.2010
Сообщений: 60
05.12.2010, 17:40  [ТС]
разбил на 2 файла. даунлоад выдает ошибку Warning: Cannot modify header information - headers already sent by (output started at z:\home\localhost\www\zaychik\download.p hp:9) in z:\home\localhost\www\zaychik\download.p hp on line 18

(там находится строка header('Content-type: image/jpeg') и ниже идет беспорядочный набор иероглифов... кодировка на первом и втором файлах одинаковая. почему бы это могло быть?
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.12.2010, 17:53
Цитата Сообщение от Brajt Посмотреть сообщение
почему бы это могло быть?
До вызова header(...) ничто не должно выводиться в поток. Что у вас в 9-ой строке (там что-то уже генерирует вывод)?
А лучше скопируйте свой download.php целиком сюда.
0
3 / 3 / 0
Регистрация: 20.11.2010
Сообщений: 60
05.12.2010, 17:58  [ТС]
Цитата Сообщение от ostgals Посмотреть сообщение
До вызова header(...) ничто не должно выводиться в поток. Что у вас в 9-ой строке (там что-то уже генерирует вывод)?
А лучше скопируйте свой download.php целиком сюда.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Untitled Document</title>
</head>

<body>
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
<?php // download.php
 
$img = 'files/'.$_GET['image']; // получаем имя файла оригинальной картинки
 
// Set a maximum height and width
$width = 200;
$height = 200;
 
// Content type
header('Content-type: image/jpeg');
 
// Get new dimensions
list($width_orig, $height_orig) = getimagesize($img);
 
$ratio_orig = $width_orig/$height_orig;
 
if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}
 
// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($img);
imagecopyresampled($image_p, $image, 1, 1, 1, 1, $width, $height, $width_orig, $height_orig);
 
// Output
imagejpeg($image_p, null, 100);
 
?>
</body>
</html>


// download.php - это из 9ой строки уже убрал, но ничего не изменилось
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.12.2010, 18:03
Блин.. Вы протокол HTTP вообще не знаете.
Если вы отправляете в поток картинку, никаких других данных параллельно отправляться не должно.
Уберите все, что находится вне php-блока (оставьте только блок <?php ... ?> без каких-либо пробелов до и после). То есть ваш download.php должен содержать только тот фрагмент, что я написал.
0
3 / 3 / 0
Регистрация: 20.11.2010
Сообщений: 60
05.12.2010, 18:14  [ТС]
спасибо, очень большое, получилось. у меня появилась парочка вопросов. почему если указана высота и ширина по 200 пикселей, картинка из 240х320 получилась 150х200 и если не трудно, напишите комментарии по каждой строке что она делает. PHP учу недавно совсем...
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.12.2010, 18:26
PHP
1
2
3
// Set a maximum height and width
$width = 200;
$height = 200;
Здесь указывается максимальные размер картинки по обеим сторонам. При помощи элементарной математики скрипт высчитывает новые ширину и высоту таким образом, чтобы уменьшенная картинка "вписалась" в прямоугольник с указанными максимальными размерами. И чтобы при этом пропорции картинки сохранились (чтобы картинка не сплющивалась и не растягивалась по любой из осей).

Ваш пример - оригинальная картинка 240х320.
Нужно уменьшить картинку так, чтобы она поместилась в квадрат 200х200.
Находим наибольшую сторону (320) и рассчитываем пропорцию уменьшения: 200 / 320 = 0,625

Теперь, чтобы найти конечные размеры уменьшенного варианта картинки, перемножаем стороны оригинала на эту пропорцию:
240 * 0,625 = 150
320 * 0,625 = 200
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2010, 18:26
Помогаю со студенческими работами здесь

FTP клиент, добавить возможность скачивания каталога целиком
Добрый день всем. Есть FTP клиент на дельфи 7. Задача стоит в том, что бы получить все файлы (каталоги, папки, файлы) с сервера на...

Возможно ли написать код, чтобы можно было добавить/удалить keyFrame объекта и указать координаты картинки?
Здрасти. Возможно ли написать код чтобы можно было добавить или удалить keyFrame объекта и указать координаты картинки??? Или там...

Слайдер подключить к wordpress, чтобы была возможность из админки загружать в него картинки
Привет. И снова возникли вопросы. Тперь уже по поводу добавления на Wordpress своего слайдера. Точнее подключения его к самому движку. Я в...

После скачивания World появилась реклама в браузере
скачать Microsoft world появилась реклама в браузере и добавляются всякие ярылки на рабочем столе

Добавить в код возможность ввода диапазона массива
Привет всем! Код работает, но надо чтобы когда пользовател выбрал (&quot;If you want to have data automatically, Enter 2 &quot; ) у него была...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru