Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Уменьшаем картинку с запросом
 
 автор: Yan   (10.05.2008 в 22:12)   письмо автору
 
 

Здраствуйте.
Помогите мне пожалуйста.
Нужен скрипт, который узнаёт по адресу картинки её разрешение, и предлогает пользователю скачать её в разрешениях не ПРЕВОСХОДЯЩИХ её размер.
Приветствуються и имения делать из широкоформатных только в широкоформатные, их квадратных только в квадратные.

Исходник который "уменьшает" вот:

<?
//Ф-ия возвращает уменьшенную копию изображения. И вызывается в фомате     
//thumb.php?id=путь_к_рисунку, так же можно задать размеры, или только высоту, тогда     
//картинка уменьшится сохранив пропорции. Скрипт понимает такие форматы изображения как GIF,JPEG,PNG
//а возвращает в формате JPEG.Из HTML вызывать ф-ию нужно так <img src=thumb.php?id=путь_к_рисунку>
// список параметров thumb(путь_к_рисунку, ширина,высота)
function thumb($path,$x,$y=0)
    {
    
$t=getimagesize ($path) or die('Unknown type of image'); 
    
$with=$t[0];
    
$height=$t[1];
    switch (
$t[2]) 
        {
        case 
1:
        
$type='GIF';
        
$img=imagecreatefromgif($path); 
        break;
        case 
2:
        
$type='JPEG';
        
$img=imagecreatefromjpeg($path);
        break;
        case 
3:
        
$type='PNG';
        
$img=imagecreatefrompng($path);
        break;
        }
        if(
$y==0)
            {
$y=$x*($height/$with);}

    
header("Content-type: image/".$type);
    
$thumb=imagecreate($x,$y);
    
imagecopyresized($thumb,$img,0,0,0,0,$x,$y,$with,$height);
    
$thumb=imagejpeg($thumb);
        return 
$thumb;
    }
if(
$id)
{
echo 
thumb($id,200);
}    
?>

   
 
 автор: sim5   (11.05.2008 в 02:45)   письмо автору
 
   для: Yan   (10.05.2008 в 22:12)
 

Что-то у вас не то с вопросом. Скачать - это значит с сервера клиенту, и тут не может быть разговора о превышении размеров. А вот закачать - это от клиента на сервер, и тут потребуется проверка как размера, так и разрешения, плюс типа закачиваемого. Может вы второе имеете ввиду?

   
 
 автор: Yan   (11.05.2008 в 11:58)   письмо автору
 
   для: sim5   (11.05.2008 в 02:45)
 

Ну да, "скачать - это значит с сервера клиенту...."

   
 
 автор: sim5   (11.05.2008 в 12:09)   письмо автору
 
   для: Yan   (11.05.2008 в 11:58)
 

Ну тогда, что означает: и предлогает пользователю скачать её в разрешениях не ПРЕВОСХОДЯЩИХ её размер.
Если у вас на сервере картинка имеет размер, например, 800х600, то она и будет взята с таким размером, а никак не больше (единственное, это можно задать размеры ее в процентах при выводе в браузер, и таким образом растянуть). Так что о каких ПРЕВОСХОДЯЩИХ размерах идет речь? Другое дело уменьшить ее размер при выдачи клиенту, тогда все логично.

   
 
 автор: YAN   (11.05.2008 в 17:02)   письмо автору
 
   для: sim5   (11.05.2008 в 12:09)
 

Да, если на сервере картинка 800 на 600 то будет ссылка на картинку 800 на 600.
А если будет она 1600 на 1200 то будут ссылки 1600х1200, 1280 на 1024, 800 на 600. Но не выше чем 1600х1200

   
 
 автор: sim5   (11.05.2008 в 17:30)   письмо автору
 
   для: YAN   (11.05.2008 в 17:02)
 

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

   
 
 автор: YAN   (11.05.2008 в 18:00)   письмо автору
 
   для: sim5   (11.05.2008 в 17:30)
 

Блин. Ну понятно же выразился.
На сайте висит картинка с разрешением 1600 на 1200. Скрипт это узнаёт и предлогат пользователю скачать её в доступных разрешениях НЕ выше чем 1600 на 1200. При этом не делая из квадратной в широкоформатную или наоборот.

   
 
 автор: sim5   (11.05.2008 в 18:15)   письмо автору
 
   для: YAN   (11.05.2008 в 18:00)
 

getimagesize(ваша картинка) - вот вам размеры. И если они меньше или равны 1600х1200, то можете не боятся, что при закачивании изображения с сервера они вырастут. Вы какую-то проблему себе надумали, где ее нет.

   
 
 автор: YAN   (11.05.2008 в 18:46)   письмо автору
 
   для: sim5   (11.05.2008 в 18:15)
 

Причем тут мои проблемы?
В первом посте написана просьба (задача), Вы взяли и перевернули вопрос, введя себя, меня и других в заблуждение.

   
 
 автор: sim5   (11.05.2008 в 18:56)   письмо автору
 
   для: YAN   (11.05.2008 в 18:46)
 

Уважаемый, вы спрашиваете по сути, как запретить скачать вашу картинку с размером не более W x H c сервера. Ну как ее можно скачать с большим размером чем она есть? Ваш вопрос так ведь звучит. Или вы их хотите увеличивать до максимального размера? Вроде в вопросе нет такого.
А чтобы вы не считали виновником меня в том, что я поставил ваш вопрос "раком", я его напомню вам:
предлогает пользователю скачать её в разрешениях не ПРЕВОСХОДЯЩИХ её размер.

   
 
 автор: YAN   (11.05.2008 в 19:05)   письмо автору
 
   для: sim5   (11.05.2008 в 18:56)
 

Всё верно. Прочитайте 20 раз и подумайте.
Скрипт режет картинку, а НЕ УВЕЛИЧИВАЕТ её.
Представим на сервере 1 000 картинок. И делаем тупо идин скрипт на три разрешения.
И тогда на картинке с разрешением 100 на 100 будет ссылка скачать её в разрешении в 1600 на 1200, ну не маразм?
Вот поэтому я сюда и обратился. Чтобы скрипт опряделял размер фото и не показывал юзеру что можо скачать фото выше разрешением чем оно есть на самом деле.

   
 
 автор: sim5   (11.05.2008 в 19:23)   письмо автору
 
   для: YAN   (11.05.2008 в 19:05)
 

Зачем 20 раз, и одного раза было достаточно. Для определения размера фото используйте функцию getimagesize. А теперь я вам скажу свое мнение. Достаточно иметь на сервере два изображения: с максимальным разрешением и эскиз его. Причем эскиз изображения лучше готовить загодя, при загрузке изображения на сервер, так как она может происходить раз в месяц, а вывод страницы с эскизами по могу раз за час или минуты.
Я исхожу из того, что если мне понравится изображение, то я заберу его максимальный размер, а уж на компьютере, если надо будет, сделаю уменьшенную копию, ибо GD-библиотека, это все таки не Фотошоп, и качество при изменениях изображения оставляет желать лучшего.
Но можете уменьшать изображение при скачивания его с сервера. Для этого вам вопрос нужно не так ставить как вы его поставили, а иначе. И нечего пенять на мою непонятливость. Просто нужно взять изображение и уменьшить его до требуемых фиксированных размеров. Функция уменьшения у вас есть. Но лучше ее немного изменить.
Сначала определите нужно ли уменьшать изображение. Если нужно, то поделив ширину на высоту, узнаете ориентацию изображения. При значениях больше нуля, это будет альбомная, при меньших - портретная. Отсюда легко узнать по какой стороне изображения его уменьшать в процентах. Вот и все.

   
 
 автор: YAN   (11.05.2008 в 20:12)   письмо автору
 
   для: sim5   (11.05.2008 в 19:23)
 

Разжовываю до безобразия.
Сайт обойной тематики. Стоит на CMS SLAED 4.1 PRO, уже все сделано всё готово. Но желательно добавить именно этот скрипт, дабы "непродвинутые юзеры" качали обои только ихнего разрешения. (Сам конечно ставлю 1600 и выше)
Просто был опыт что люди жалывались на такие мелочи.

КМСка сама делает превьюшки, нажав на неё получаем всю картинку в оригинале.
А нужный скрипт неделает превьюшки, и сразу отправляет фаил юзеру в нужном ему размеру.

П.С. sim5, я нехотел не кого обидеть.

   
 
 автор: YAN   (11.05.2008 в 20:14)   письмо автору
 
   для: sim5   (11.05.2008 в 19:23)
 

Разжовываю до безобразия.
Сайт обойной тематики. Стоит на CMS SLAED 4.1 PRO, уже все сделано всё готово. Но желательно добавить именно этот скрипт, дабы "непродвинутые юзеры" качали обои только ихнего разрешения. (Сам конечно ставлю 1600 и выше)
Просто был опыт что люди жалывались на такие мелочи.

КМСка сама делает превьюшки, нажав на неё получаем всю картинку в оригинале.
А нужный скрипт неделает превьюшки, и сразу отправляет фаил юзеру в нужном ему размеру.

П.С. sim5, я нехотел не кого обидеть.

   
 
 автор: sim5   (11.05.2008 в 20:24)   письмо автору
 
   для: YAN   (11.05.2008 в 20:14)
 

Меня обитеть трудно. Ну уменьшайте в чем проблема то? Тем более обои, это загодя под фиксированные разрешения уменьшение в процентах знать можно. Как уменьшить исходник есть у вас, как изменить, написал вам. Если вы имеете ввиду - "непродвинутые юзеры" качали своего разрешения, указывая их при запросах, так тоже проблемы нет, принимайте уменьшайте.
Функция есть, подумайте как доработать. Не сможете, может кто поможет (хотя готовых примеров предостаточно в этом разделе), а мне уже спать пора.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования