Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Загрузка картинок на сервер и изменение оазмеров (https://forum.antichat.xyz/showthread.php?t=84527)

mff 12.09.2008 09:52

Загрузка картинок на сервер и изменение оазмеров
 
Ребят, как сделать загрузку картинок, но при этом чтобы менялся их размер и делались 3 копии, малая, средняя и оригинал? :confused: Может у кого примерчик есть?

BlackSun 12.09.2008 09:54

Возьми любой скрипт для хостинга картинок, там полюбому будет "примерчик"

mff 12.09.2008 10:06

СПС, вот сразу нашел:
10 скриптов хостинга картинок!

http://i039.radikal.ru/0801/ca/b1bf2ac7404c.jpg

В архиве находятся 10 популярных скриптов для создания хостинга картинок. Теперь выбрав наиболее понравившийся скрипт, Вы сможете создать собственный сервис по хранению изображений, наподобие foto.radikal, imageshack или других подобных сайтов.

Список скриптов в архиве (1.42 Mb):

CoSiS Free Image Host Script
EasyImageHoster 1.35
GMPH v1.0.3
Image Upload
Image Host Script 0.7
DXL dev\' Image Hosting Script
ImgUpload 2.0.1
UPLOADIMAGE v1.02
imageshack.us Clone
eXtreme Photo Hosting 2006

http://letitbit.net/download/9535a8173129/kpot.net-image.zip.html
http://depositfiles.com/files/2987111

Полез ковырять...

[x26]VOLAND 12.09.2008 12:36

Я делаю вот так:

PHP код:

function resize($image$new_width$target) {
    if (
file_exists($image))
    {
        
$image ImageCreateFromJPEG($image);
        
$width Imagesx($image);
        
$height Imagesy($image);
        
$new_height = ($new_width $height) / $width ;
        
$thumb ImageCreateTrueColor($new_width,$new_height);
        
ImageCopyResampled($thumb$image0,0,0,0$new_width$new_height$width$height);
        
ImageJPEG($thumb$target100);
        
Imagedestroy($image);
    }


$image - исходная картинка
$new_width - новая ширина (относительно неё происходит ресайз)
$target - целевая картинка

Пример вызова:
PHP код:

resize($image128'128.jpg');
resize($image256'256.jpg'); 

Получаем 2 уменьшенные картинки разного размера.

//PS: думаю загрузку на сервер сам реализуешь.

mff 12.09.2008 12:41

[x26]VOLAND? то что надо! Спс! :)

imajo.ati 12.09.2008 16:40

[x26]VOLAND
если высота картинки больше ширины, нужно задавать как раз высоту, т.к. ширина не будет известна изначально. к примеру если подгонять изображение 200x655 к 400х300

я по-другому решил это

PHP код:

function open_image($file) {
    
$im = @imagecreatefromjpeg($file);
    if (
$im !== false) return $im;
    
$im = @imagecreatefromgif($file);
    if (
$im !== false) return $im;
    
$im = @imagecreatefrompng($file);
    if (
$im !== false) return $im;
            
$im = @imagecreatefromgd2($file);
            if (
$im !== false) return $im;
            
$im = @imagecreatefromwbmp($file);
            if (
$im !== false) return $im;
            
$im = @imagecreatefromxbm($file);
            if (
$im !== false) return $im;
            
$im = @imagecreatefromstring(file_get_contents($file));
            if (
$im !== false) return $im;
    return 
'error';
}
//end_func

function imageresize($outfile,$infile,$neww,$newh) {

    
$im open_image($infile);
    if ( 
$im === 'error' ) return false;

    else
    {
    
$imajo_w imagesx($im);
    
$imajo_h imagesy($im);

    if ( 
$imajo_w $neww OR $imajo_h $newh )
    {
    
$nat true;

      if ( 
$imajo_w $neww AND $imajo_h <= $newh )
      {
        
$percent $imajo_w $neww;
        
$new_width  $neww;
        
$new_height $imajo_h $percent;
      }
      elseif ( 
$imajo_w <= $neww AND $imajo_h $newh )
      {
        
$percent $imajo_h $newh;
        
$new_height $newh;
        
$new_width  $imajo_w $percent;
      }
      else
      {
        
$percent_h $imajo_h $newh;
        
$percent_w $imajo_w $neww;
        if ( 
$percent_h $percent_w )
        {
            
$new_height round($imajo_h $percent_h);
            
$new_width  round($imajo_w $percent_h);
        }
        else
        {
            
$new_height round($imajo_h $percent_w);
            
$new_width  round($imajo_w $percent_w);
        }
      }


      
$im1 imagecreatetruecolor($new_width,$new_height);
      
imagecopyresampled($im1,$im,,,,,$new_width,$new_height,imagesx($im),imagesy($im));
    }
    else
    {
     
$im1 false;
     
$nat false;
    }


    if ( 
$im1 === false )
    {
      
imagejpeg($im,$outfile,75);
      
imagedestroy($im);
    }
    else
    {
      
imagejpeg($im1,$outfile,75);
      
imagedestroy($im);
      
imagedestroy($im1);
    }
    return 
$nat;
    }
}
//end_func 


но код длинный получился О_О
можно по желанию компактнее написать


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


Время: 05:22