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

Форум PHP

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

 

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

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

тема: gd и размер изображений
 
 автор: vitroot   (12.12.2007 в 13:56)   письмо автору
 
 

Вот по этому - http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145
делал уменьешние изображения. Скрипт с одними изображениями работает, с другими - нет. Разница у изображений, которые ему подсовываю только в размерах (кб). Те, чьл до 300 кило - обрабатываются, те, что больше - нет. Размеры выявил экспериментально, поэтому они примерные. Как и где настроить, чтобы либа работала с изображениями, хотя бы до 500 кило? Или дело не в этом?

   
 
 автор: cheops   (12.12.2007 в 14:46)   письмо автору
 
   для: vitroot   (12.12.2007 в 13:56)
 

Дело происходит на локальной машине (Windows) или на сервере (UNIX)?

   
 
 автор: vitroot   (13.12.2007 в 03:41)   письмо автору
 
   для: cheops   (12.12.2007 в 14:46)
 

Дело на локальной машине под Ubunt'ой

   
 
 автор: mihdan   (12.12.2007 в 17:46)   письмо автору
 
   для: vitroot   (12.12.2007 в 13:56)
 

может это связано с php.ini

   
 
 автор: Trianon   (13.12.2007 в 00:07)   письмо автору
 
   для: vitroot   (12.12.2007 в 13:56)
 

300 Кило Jpeg'а может оказаться огромным изображением, в распакованном (BMP) виде занимающем памяти больше, чем отведено на сервере php-процессу.

   
 
 автор: vitroot   (13.12.2007 в 05:40)   письмо автору
 
   для: Trianon   (13.12.2007 в 00:07)
 

Вот какую ошибку пишет:

>Warning: imagejpeg(): supplied argument is not a valid Image resource in /var/www/add_screen.php on line 109
>Warning: imagedestroy(): supplied argument is not a valid Image resource in /var/www/add_screen.php on line 113

   
 
 автор: vitroot   (13.12.2007 в 05:48)   письмо автору
 
   для: Trianon   (13.12.2007 в 00:07)
 

приведу свой код. Народ, помогите, кому не сложно, ну очень надо! :)


    $sql=mysql_query("INSERT INTO `screens` VALUES (Здесь помещаю инфу об изображении в БД - все нормально);

$ss=mysql_query("SELECT * FROM `screens` WHERE filename='".$_FILES['file']['name']."';");
$img=mysql_fetch_array($ss);


$file="upload/".$_FILES['file']['name'];                                        
$w=$size[0]/10;                                                
$h=$size[1]/10;                                                                                                    
$empty = imagecreatetruecolor($w, $h);                                        
imagefill($empty, 0, 0, 0xFFFFFF);                                        
$old_zip=$size[0]/$size[1];                                            
$new_zip=$w/$h;                                                                                                    
 if ($old_zip>$new_zip)
 {
     $old_h=$size[1];
     $size[1]=floor($size[0]/$new_zip);
     $old_h=floor($old_h*$h/$size[1]);
 }
else
{
    $old_w=$size[0];
    $size[0]=floor($size[1]*$new_zip);
    $old_w=floor($old_w*$w/$size[0]);
}

switch ($size['mime'])
{
    case "image/jpeg":            $screen=imagecreatefromjpeg($file); $ext="jpg";break;            
    case "image/gif":                $screen=imagecreatefromgif($file); $ext="gif";break;        
    case "image/png":            $screen=imagecreatefrompng($file); $ext="png";break;            
}

imagecopyresampled($empty, $screen, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);                        

switch ($size['mime'])
{
    case "image/jpeg":            imagejpeg($file, "small_".$ss['id'].".$ext");break;                
    case "image/gif":            imagegif($file, "small_".$ss['id'].".$ext");break;            
    case "image/png":            imagepng($file, "small_".$ss['id'].".$ext");break;                
}

imagedestroy($file); imagedestroy($screen);                                    

echo "<img src=/upload/small_".$ss['id'].">";

}

   
 
 автор: SnooPI   (13.12.2007 в 06:41)   письмо автору
 
   для: vitroot   (13.12.2007 в 05:48)
 

Держи скрипт....использовать так: img.php?img=/pyt/do/kartinki.jpg

<?php
    error_reporting
(0);

    
$img = isset($_GET['img'])    ?    $_GET['img']    :    ''    ;

    
$w 70;
    
$str "";
    
$size 1;
    
$q =70;

    
$ff        =    explode("."$img);
    
$km        =    count($ff);
    
$km        =    $km 1;
    
$format    =    $ff[$km];

    if(
$format == "jpg")
    {
        
$head        'jpg';
        
$createfunc    'imagejpeg';
        
$funci        "imagecreatefromjpeg";
    }
    else
    if(
$format == "gif")
    {
        
$head        'gif';
        
$createfunc    'imagegif';
        
$funci        "imagecreatefromgif";
    }
    else
    {
        
$head        'jpeg';
        
$createfunc    'imagejpeg';
        
$funci        "imagecreatefromjpeg";
    }

    list(, , 
$type,)    =    getimagesize($img);
    
$im1 $funci($img);
    
$w_src imagesx($im1);
    
$h_src imagesy($im1);
    if(
$w_src $w)
    {
        
$ratio    $w_src/$w;
        
$w_dest round($w_src/$ratio);
        
$h_dest round($h_src/$ratio);
        
$dest    imagecreatetruecolor($w_dest,$h_dest);
        
imagecopyresampled($dest$im10,0,0,0,$w_dest,$h_destimagesx($im1), imagesy($im1));
    }
    else
    if(
$w_src <= $w)
    {
        
$dest imagecreatetruecolor($w_src,$h_src);
        
imagecopyresampled($dest$im10,0,0,0,$w_src,$h_src$w_src$h_src);
    }

    
$x_text    $w_dest-imagefontwidth($size)*strlen($str)-3;
    
$y_text $h_dest-imagefontheight($size)-3;
    
$white    imagecolorallocate($dest255255255);
    
$black    imagecolorallocate($dest000);
    
$gray    imagecolorallocate($dest127127127);

    if(
imagecolorat($dest,$x_text,$y_text) > $gray$color $black;
    if(
imagecolorat($dest,$x_text,$y_text) < $gray$color $white;

    
imagestring($dest$size$x_text 1$y_text 1$str,$white-$color);
    
imagestring($dest$size$x_text 1$y_text 1$str,$white-$color);
    
imagestring($dest$size$x_text 1$y_text 1$str,$white-$color);
    
imagestring($dest$size$x_text 1$y_text 1$str,$white-$color);
    
imagestring($dest$size$x_text 1$y_text,   $str,$white-$color);
    
imagestring($dest$size$x_text 1$y_text,   $str,$white-$color);
    
imagestring($dest$size$x_text,   $y_text 1$str,$white-$color);
    
imagestring($dest$size$x_text,   $y_text 1$str,$white-$color);
    
imagestring($dest$size$x_text,   $y_text,   $str,$color);

    
header("Content-type: image/$head");
    
$createfunc($dest,'',$q);
?>

   
 
 автор: vitroot   (13.12.2007 в 06:58)   письмо автору
 
   для: SnooPI   (13.12.2007 в 06:41)
 

Спасибо, скрипт работает, вот только все-равно работает только с изображениями примерно до 300 кило :(
И подскажите, как полученое изображение сохранить в папке под именем "small_".$dest.$head ?

   
Rambler's Top100
вверх

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