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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вырезать кусок изображения

Сообщения:  [1-6] 

 
 автор: x64   (30.07.2009 в 09:09)   письмо автору
 
   для: maximum7   (29.07.2009 в 21:48)
 

центральная часть — плохо. ибо некоторые могут загрузить 1000x1000, тогда вообще непойми что получится. лучше масштабировать.

следующая функция получает имя файла (того, который только закачан), и возвращает уменьшенное изображение (не файл!!!), которое затем можно сохранить в любом формате (например, с помощью функции imagejpeg(<возвращенный_функцией_результат>, <файл_в_который_сохранить>);)

<?php
function GetThumbImage($file$w 70$h 70) {
        
$info getimagesize($file);
        switch (
$info[2]) {
        case 
1$im imagecreatefromgif($file);
            break;
        case 
2$im imagecreatefromjpeg($file);
            break;
        case 
3$im imagecreatefrompng($file);
            break;
        default: return 
null;
        }
        
        if (
$info[0] <= $w && $info[1] <= $h) return $im;
        
$nw 0;
        
$nh 0;
        
$a1 $w $info[0];
        
$a2 $h $info[1];
        if (
$a1 $a2) {
            
$nw $w;
            
$nh round($info[1] * $a1);
            if (
$nh $h$nh $h;
            if (
$nh == 0$nh 1;
        } else {
            
$nh $h;
            
$nw round($info[0] * $a2);
            if (
$nw $w$nw $w;
            if (
$nw == 0$nw 1;
        }
        
$nim imagecreatetruecolor($nw$nh);
        
imagecopyresized($nim$im0000$nw$nh$info[0], $info[1]);
        return 
$nim;
    }
?>

  Ответить  
 
 автор: tvv123456   (30.07.2009 в 00:13)   письмо автору
 
   для: ride   (29.07.2009 в 22:44)
 

Нужно только еще небольшую проверочку сделать gif или jpg и два сценария соответственно
А так вообще советую посмотреть здесь: http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145 -

  Ответить  
 
 автор: ride   (29.07.2009 в 22:44)   письмо автору
 
   для: maximum7   (29.07.2009 в 22:27)
 

imagecreatefromgif() вместо imagecreatefromjpeg(),
imagegif() вместо imagejpeg()
точно также и для *.png: imagecreatefrompng() и imagepng()

  Ответить  
 
 автор: maximum7   (29.07.2009 в 22:27)   письмо автору
 
   для: ride   (29.07.2009 в 21:55)
 

нашёл как сделать



  function imageresize($outfile,$infile,$neww,$newh,$quality) {
    $im=imagecreatefromjpeg($infile);
    $im1=imagecreatetruecolor($neww,$newh);
    imagecopyresampled($im1,$im,0,0,0,0,$neww,$newh,imagesx($im),imagesy($im));

    imagejpeg($im1,$outfile,$quality);
    imagedestroy($im);
    imagedestroy($im1);
    }



если изображение jpg всё норм, но что если загружают gif?

  Ответить  
 
 автор: ride   (29.07.2009 в 21:55)   письмо автору
 
   для: maximum7   (29.07.2009 в 21:48)
 

думаю, это неудачная идея.
почему только центр и только 70х70?
создайте миниатюру 70х70.
здесь есть пример.
также по форуму их полно. почитайте, будет полезно.
а если уж что-то не получится, тогда обращайтесь

  Ответить  
 
 автор: maximum7   (29.07.2009 в 21:48)   письмо автору
 
 

Добрый день.

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

  Ответить  

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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