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

Форум PHP

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

 

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

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

тема: Вырезать кусок изображения
 
 автор: maximum7   (29.07.2009 в 21:48)   письмо автору
 
 

Добрый день.

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

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

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

  Ответить  
 
 автор: 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 в 22:44)   письмо автору
 
   для: maximum7   (29.07.2009 в 22:27)
 

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

  Ответить  
 
 автор: 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 -

  Ответить  
 
 автор: 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, $im, 0, 0, 0, 0, $nw, $nh, $info[0], $info[1]);
        return 
$nim;
    }
?>

  Ответить  
Rambler's Top100
вверх

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