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

Форум PHP

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

 

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

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

тема: Изменение размера рисунка
 
 автор: Jaroslav   (10.08.2006 в 13:05)   письмо автору
 
 

Здравствуйте!

Подскажите, пожалуйста, как можно изменить размеры рисунка.
Например, пользователи добавляют рисунок 1000x600 и ставят галочку «сделать превью», и этот большой рисунок должен переделываться в маленький, скажем 200x200. Не просто поменять атрибуты width и height, а переписать его с другими размерами.

С уважением,
Ярослав.

   
 
 автор: DJ Paltus   (10.08.2006 в 13:29)   письмо автору
 
   для: Jaroslav   (10.08.2006 в 13:05)
 

Хотел найти ссылку в форуме, но не смог. Вот код, который ипользую я.
Здесь в параметрах $w и $h соответственно ширина и высота будущей картинки.
Задавать надо ширину большую, высоту меньшую. А скрипт сам выяснит, горизонтальная картинка или вертикальная и поменяет, если надо, значения. Главное, соблюдать пропорции, это обычно 3*4 или 4*3, то есть 150*200, 90*120 и так далее. Тогда у иконок не будет черных полей.

<?php
function resizeimg($filename$w$h){
        
$size_img getimagesize($filename);
        print
"$size_img[0] x $size_img[1] <br />";
        if(
$size_img[0]<$size_img[1]){$a=$w$w=$h$h=$a;}
        
$ratio $w/$h;
        
$dest_img imagecreatetruecolor($w$h);
        
imagefill($dest_img000xFFFFFF);
        
$src_ratio=$size_img[0]/$size_img[1];
        if (
$src_ratio>$ratio){
                
$old_h=$size_img[1];
                
$size_img[1]=floor($size_img[0]/$ratio);
                
$old_h=floor($old_h*$h/$size_img[1]);
                }
        else    {
                
$old_w=$size_img[0];
                
$size_img[0]=floor($size_img[1]*$ratio);
                
$old_w=floor($old_w*$w/$size_img[0]);
                }
        switch (
$size_img['mime']){
        case 
'image/jpeg'$src_img imagecreatefromjpeg($filename);
                           
$ext="jpg";
                           break;
        case 
'image/gif':  $src_img imagecreatefromgif($filename);
                           
$ext="gif";
                           break;
                           }
        
imagecopyresampled($dest_img$src_img0000$w$h$size_img[0], $size_img[1]);
        switch (
$size_img['mime']){
               case 
'image/jpeg'imagejpeg($dest_img"lt_".$filename);
                                  break;
               case 
'image/gif':  imagegif($dest_img"lt_".$filename);
                                  break;
                                  }
        
imagedestroy($dest_img);
        
imagedestroy($src_img);
}

   
 
 автор: Jaroslav   (10.08.2006 в 15:57)   письмо автору
 
   для: DJ Paltus   (10.08.2006 в 13:29)
 

Спасибо, DJ Paltus!!!

Все прекрасно работает!

   
 
 автор: Veli   (15.08.2006 в 17:46)   письмо автору
 
   для: Jaroslav   (10.08.2006 в 15:57)
 

А я честно говоря не въехал. Объясните, как вывести картинку.
Написать например

resizeimg("1.jpg",100,70);

так он выводит только размер начальной картинки.
Как вывести измененную то?

   
 
 автор: Jaroslav   (28.08.2006 в 22:58)   письмо автору
 
   для: DJ Paltus   (10.08.2006 в 13:29)
 

Здравствуйте!

Стал повнимательнее смотреть данный скрипт. Обнаружил, что вокруг рисунков (уменьшенных) появляются черные поля.

Подскажите, пожалуйста, как его доработать, чтобы они не появлялись?

С уважением,
Ярослав.

   
Rambler's Top100
вверх

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