[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с разрешение картинки
Nechto
Здравствуйте.

Проблема следующая.


я подгружаю фотографию с разрешение 1024х789


делее вывожу её на экран этим скриптом
HTML
<img id='opic_1' src='switch/Image_ob/111.jpg' alt='Названия рисунка' width='100' height='150'>


Всё выводит нормально. Но вопрос почему разрешение фотки не меняется и вес остаётся как будто я её полностью открыл.



Спустя 11 минут, 28 секунд (10.03.2009 - 11:37) sergeiss написал(а):
В соседней теме http://phpforum.ru/index.php?showtopic=16496&hl= по аналогичному вопросу был дан правильный ответ
Цитата
Можно применять функцию imagecopyresampled() из библиотеки GD


От себя добавлю, что не "можно", а "нужно" использовать эту функцию.

По сути дела, надо создать небольшой скрипт, который "на лету" создает уменьшенную копию картинки, которая уже и передается пользователю для просмотра.

А настройки в HTML настраивают только видимый размер картинки, но реальный ресайз не делают.

Спустя 11 минут, 42 секунды (10.03.2009 - 11:48) Nechto написал(а):
Я правильно понял.

При выполнение запроса серверу, срабатывает скрипт и минимизирует фотку. и отсылает клиенту.

Спустя 30 минут, 17 секунд (10.03.2009 - 12:19) sergeiss написал(а):
Если это был вопрос smile.gif, то да, ты правильно понял.

Спустя 1 день, 6 часов, 26 минут, 49 секунд (11.03.2009 - 18:46) Nechto написал(а):
Вот нашёл код всё работает. Но есть такой касечёк. Можно ли мне избавиться от постояного дублирования картинок, т.е. вывод картинки на экран не сохраняя их на жёстком?

PHP
<?php
$image_from 
'123.jpg';
$image_to '10.jpg';

function 
ResizeImage($image_from,$image_to$fitwidth,$fitheight,$quality) { 
        global 
$php_inc

        
$os=$originalsize=getimagesize($image_from); 
        if(
$originalsize[2]!=&& $originalsize[2]!=&& $originalsize[2]!=&& ($originalsize[2]<or $originalsize[2]>12)) { 
            return 
false
        } 
        if(
$originalsize[0]>$fitwidth or $originalsize[1]>$fitheight) { 
            
$h=getimagesize($image_from); 
            if((
$h[0]/$fitwidth)>($h[1]/$fitheight)) 
                { 
                    
$fitheight=$h[1]*$fitwidth/$h[0]; 
                }else{ 
                    
$fitwidth=$h[0]*$fitheight/$h[1]; 
                } 
            if(
$os[2]==or ($os[2]>=&& $os[2]<=12))$i ImageCreateFromJPEG($image_from); 
            if(
$os[2]==3)$i=ImageCreateFromPng($image_from); 
            
$o ImageCreateTrueColor($fitwidth$fitheight); 
            echo 
$i;
            echo 
$o;
            
imagecopyresampled($o$i0000$fitwidth$fitheight$h[0], $h[1]); 
            
imagejpeg($o$image_to$quality);  
            
chmod($image_to,0777); 
            
imagedestroy($o); 
            
imagedestroy($i);


            echo 
'-1-';
            return 
2
        } 
        if(
$originalsize[0]<=$fitwidth && $originalsize[1]<=$fitheight) { 
            
$i ImageCreateFromJPEG($image_from); 
            
imagejpeg($i$image_to$quality);  
            
chmod($image_to,0777);
            echo 
'-2-'
            return 
1
        } 
    }
    
ResizeImage($image_from,$image_to,150,150,75);    
echo 
"<img src='10.jpg' alt='1221'>";

Спустя 45 минут, 17 секунд (11.03.2009 - 19:31) bret написал(а):
Конечно можно
В урл изображения ставишь какой-нить resizaer.php с get-параметрами, по которым генерится и выдаётся браузеру нужное изображение нужного размера

Спустя 16 минут, 29 секунд (11.03.2009 - 19:47) Nechto написал(а):
А можно по подробнее, а то я не совсем понял. Если можно то с примером.

Пожалуйста

Спустя 25 минут, 6 секунд (11.03.2009 - 20:12) bret написал(а):
схематично как-то так
на входе <img src='resizer.php?id=1&w=100' />
сам resizer.php

PHP
$image_url 'images/'.$_GET['id'].'.jpg';
$image_width $_GET['w'];
$im ImageCreateFromJPEG($image_url);
// тут мы пропорционально ресайзим
// размеры картинки согласно $image_width
header("Content-type: image/jpeg");
ImageJpeg($im);
ImageDestroy($im);

Спустя 13 минут, 21 секунда (11.03.2009 - 20:26) twin написал(а):
Вообще функции обработки графики довольно прожорливы. Не стоит ИМХО ресайзить картинки на лету. Проще сделать это один раз при загрузке и выдавать превьюшку отдельно.

Спустя 3 минуты, 15 секунд (11.03.2009 - 20:29) Nechto написал(а):
Ясно. так и сделаю. Это и сделать как я уже понял проще.
Всем спасибо за помощь!!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.