Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Работа с изображениями
Форумы портала PHP.SU » » Графика в PHP » Работа с изображениями

Страниц (1): [1]
 

1. new01 - 19 Ноября, 2011 - 13:56:12 - перейти к сообщению
У меня изображение закачивается через ajax и вот этот скрипт обрабатывает его. Но проблема в том, что когда закачивал файл 600 кбайт, он несколько не изменился не по рамезру(остался 600 кбайт) не по ширине и длине! в чем проблема? весь день голову ломаю! А когда закачивал файл чуть больше 1 метра, то всё отлично! Помогите пожалуйста найти ошибку!
PHP:
скопировать код в буфер обмена
  1.  
  2. function imageresize($outfile,$infile,$neww,$newh,$quality) {
  3. $im=imagecreatefromjpeg($infile); // Создаем графический объект из входящего файла
  4.  
  5. // Далее вычесляем ширину и высоту входящего файла и создаваемого фала:
  6. $k1=$neww/imagesx($im);
  7. $k2=$newh/imagesy($im);
  8. $k=$k1>$k2?$k2:$k1;
  9.  
  10. $w=intval(imagesx($im)*$k);
  11. $h=intval(imagesy($im)*$k);
  12.  
  13. $im1=imagecreatetruecolor($w,$h); // Создаем новый графический объект в который запишем измененный рисунок; $w,$h - ширина и высота
  14. imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im)); // Копируем входящий рисунок в исходящий в начало координат.
  15.  
  16. imagejpeg($im1,$outfile,$quality); // сохраняем файл в jpg формате с заданным качеством
  17. imagedestroy($im); // разрушаем входящий файл
  18. imagedestroy($im1); // разрушаем исходящий файл
  19. }
  20.  
  21.    function namefoto($pol,$Nameuser,$ext)
  22.                {
  23.                            $arr = array(
  24.                            'a','b','c','d','e','f',
  25.                            'g','h','i','j','k','l',
  26.                            'm','n','o','p','r','s','t','u','v','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','R','S','T','U','V','X','Y','Z',
  27.                            '1','2','3','4','5','6','7','8','9','0');
  28.                            $all=rand(1,1000);
  29.                            $x=rand(1,58);
  30.                            $x=$arr[$x];
  31.                            $a=rand(1,2);
  32.                            if($a==1)
  33.                            {
  34.                            $all="$x$all";
  35.                            }
  36.                            else
  37.                            {
  38.                            $all="$all$x";
  39.                            }
  40.                            $t=rand(2,5);
  41.                            for($i=1;$i<=$t;$i++)
  42.                            {
  43.                            $a=rand(1,58);
  44.                            $a=$arr[$a];
  45.                            $slovo="$slovo$a";
  46.                            }
  47.                            $t=rand(4,7);
  48.                            for($i=1;$i<=$t;$i++)
  49.                            {
  50.                            $a=rand(1,58);
  51.                            $a=$arr[$a];
  52.                            $slovo="$slovo$a";
  53.                            }
  54.                            $all="$all$slovo";
  55.                            
  56.                            return $all;
  57.                            }
  58. $host = "localhost";
  59. $username = "***********";
  60. $password = "**********";
  61. $connect = @mysql_connect("$host","$username","$password");
  62. $db = @mysql_select_db($username,$connect);
  63. mysql_query('set character_set_client="utf8"');
  64. mysql_query('set character_set_results="utf8"');
  65. $Nameuser=$_SESSION['Name'];
  66. $max_image_width        = 6000;
  67. $max_image_height       = 6000;
  68. $max_image_size         = 3048576;
  69. $valid_types            =  array("gif","jpg","png","jpeg");
  70. $uploaddir = "files/";
  71. $uploadfile = $uploaddir.basename($_FILES['myfile']['name']);
  72.  $filename = $_FILES['myfile']['tmp_name'];
  73. if (filesize($filename) > $max_image_size)
  74. {
  75. echo"<p id='zagolovok'>Ошибка!</p>";
  76. echo "<p>Максимальный размер файла 3мб! Ваш файл превысил этот показатель!</p>";
  77. }
  78.   else
  79.   {
  80.   $filename = $_FILES['myfile']['tmp_name'];
  81.   $ext = substr($_FILES['myfile']['name'],
  82.   1 + strrpos($_FILES['myfile']['name'], "."));
  83.   $ext=strtolower($ext);
  84.       if (!in_array($ext, $valid_types) or !isset($_SESSION['id']))
  85.           {
  86.          echo"<p id='zagolovok'>Ошибка!</p>";
  87.           echo "<p>Ваш файл не соответсвует ни одному из этих типов gif, jpg, png, jpeg!</p>";
  88.           }
  89.             else
  90.                 {
  91.                  $all=namefoto($pol,$Nameuser,$ext);
  92.                   $Name_foto="files/";
  93.                   $Name_foto="$Name_foto$all.$ext";
  94.                         $sqsasl = mysql_query("SELECT Foto FROM Usersinfo WHERE Foto='$Name_foto'");
  95.                        
  96.                        
  97.                        
  98.                           if(mysql_num_rows($sqsasl)>0)
  99.                           {
  100.                           $all=namefoto($pol,$Nameuser,$ext);
  101.                           $Name_foto="files/";
  102.                           $Name_foto="$Name_foto$all.$ext";
  103.                           }
  104.                 move_uploaded_file($_FILES['myfile']['tmp_name'], $Name_foto);
  105.                 $size = GetImageSize($Name_foto);
  106.                    if (($size) && ($size[0] < $max_image_width) && ($size[1] < $max_image_height))
  107.                   {
  108.                                 $Size=getimagesize("$Name_foto");
  109.                                 $Width=$Size[0];
  110.                                 $Height=$Size[1];
  111.                                  if($Width>200 or $Height>200)
  112.                 {
  113.                                  $n=1;
  114.                    while($Width>200 or $Height>200)
  115.                   {
  116.                                  $Width=$Width/$n;
  117.                                  $Height=$Height/$n;
  118.                                    if($Width>600 or $Height>600)
  119.                                    {
  120.                                    $n=$n+0.0001;
  121.                                    }
  122.                                      else
  123.                                         {
  124.                                         $n=$n+0.03;
  125.                                         }
  126.                                   }
  127.                                 }
  128.                                 $Width=ceil($Width);
  129.                                 $Height=ceil($Height);
  130.                                 imageresize("$Name_foto","$Name_foto",$Width,$Height,85);
  131.                                 $id=$_SESSION['id'];
  132.                                 $ss = mysql_query("SELECT Foto FROM Usersinfo WHERE id='$id'");
  133.                                 $foto=@mysql_fetch_array($ss);
  134.                                 $foto=$foto['Foto'];
  135.                                 @unlink($foto);
  136.                                 $sql = "UPDATE Usersinfo SET Foto='$Name_foto' WHERE id='$id' ";
  137.                 $result=mysql_query($sql);     
  138.                                
  139.                                 echo"OK";      
  140.                     }
  141.                     else
  142.                         {
  143.                         @unlink($Name_foto);
  144.                          echo"<p id='zagolovok'>Ошибка!</p>";
  145.                         echo "<p>Максимальные размеры файла 6000 на 6000! Ваш файл превысил этот показатель!</p>";
  146.                         }
  147.                
  148.                 }
  149.      
  150.   }
  151.  
  152.  
  153.  
  154.  
2. De-Luxis - 19 Ноября, 2011 - 14:31:31 - перейти к сообщению
Для таких целей лучше использовать WideImage.
3. new01 - 19 Ноября, 2011 - 14:46:35 - перейти к сообщению
нашел, что ошибка в этой части. Ширина и высота почему-то всегда равны нулю(
PHP:
скопировать код в буфер обмена
  1.  
  2. function imageresize($outfile,$infile,$neww,$newh,$quality) {
  3. $im=imagecreatefromjpeg($infile); // Создаем графический объект из входящего файла
  4.  
  5. // Далее вычесляем ширину и высоту входящего файла и создаваемого фала:
  6. $k1=$neww/imagesx($im);
  7. $k2=$newh/imagesy($im);
  8. $k=$k1>$k2?$k2:$k1;
  9.  
  10. $w=intval(imagesx($im)*$k);
  11. $h=intval(imagesy($im)*$k);
  12.  
  13. $im1=imagecreatetruecolor($w,$h); // Создаем новый графический объект в который запишем измененный рисунок; $w,$h - ширина и высота
  14. imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im)); // Копируем входящий рисунок в исходящий в начало координат.
  15.  
  16. imagejpeg($im1,$outfile,$quality); // сохраняем файл в jpg формате с заданным качеством
  17. imagedestroy($im); // разрушаем входящий файл
  18. imagedestroy($im1); // разрушаем исходящий файл
  19. }
  20.  
4. new01 - 19 Ноября, 2011 - 17:37:11 - перейти к сообщению
Ребята! Нашёл ошибку! Еле еле! Если может кому-нибудь понадобится. Я не знаю почему, но функция imagecreatefromjpeg не шла для png формата, просто возращала 0. Поэтому в главную функцию(imageresize) добавляем ещё одну переменную, которая будет указывать формат изображения. А далее сравнимаем равен ли формат изображения png? Если да, то используем вот эту фукнцию imagecreatefrompng,если нет, то imagecreatefromjpeg. И всё) Да и ещё с форматом gif аналогичным способом функция imagecreatefromgif.
Вот пример: ($ext-формат файла)
PHP:
скопировать код в буфер обмена
  1.  
  2. if($ext=="png")
  3. {
  4. $im=imagecreatefrompng($infile); // Создаем графический объект из входящего файла
  5. }
  6.    else
  7.    {
  8.      if($ext=="gif")
  9.          {
  10.          $im=imagecreatefromgif($infile); // Создаем графический объект из входящего файла
  11.          }
  12.            else
  13.            {
  14.            $im=imagecreatefromjpeg($infile); // Создаем графический объект из входящего файла
  15.            }
  16.    
  17.    }
  18.  
  19. // Далее вычесляем ширину и высоту входящего файла и создаваемого фала:
  20. $k1=$neww/imagesx($im);
  21. $k2=$newh/imagesy($im);
  22. $k=$k1>$k2?$k2:$k1;
  23.  
  24. $w=intval(imagesx($im)*$k);
  25. $h=intval(imagesy($im)*$k);
  26.  
  27. $im1=imagecreatetruecolor($w,$h); // Создаем новый графический объект в который запишем измененный рисунок; $w,$h - ширина и высота
  28. imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im)); // Копируем входящий рисунок в исходящий в начало координат.
  29.  
  30. imagejpeg($im1,$outfile,$quality); // сохраняем файл в jpg формате с заданным качеством
  31. imagedestroy($im); // разрушаем входящий файл
  32. imagedestroy($im1); // разрушаем исходящий файл
  33.  
5. Самогонщик - 19 Ноября, 2011 - 17:44:04 - перейти к сообщению
Я чего то не просёк фишку. Функция называется imagecreatefromjpeg (изображение создать из jpeg), с чего это она должна идти для пнг?
6. new01 - 19 Ноября, 2011 - 17:46:09 - перейти к сообщению
Самогонщик, в том то и смысл! Я нашёл на php.su готовый скрипт, именно этот! И думал, что он должен для всех форматов работать нормально, но всё равно самому пришлось покапаться)
7. De-Luxis - 19 Ноября, 2011 - 17:46:28 - перейти к сообщению
Цитата:
функция imagecreatefromjpeg не шла для png формата


imagecreatefrompng
8. new01 - 19 Ноября, 2011 - 17:51:14 - перейти к сообщению
Ну ребята! Теперь то я это знаю)

 

Powered by ExBB FM 1.0 RC1