Проблем с imagesx и imagesy

pich

Registered
Провет на всички :)

след като си направих галерия за уеб сайта ми възникна един малък проблем с imagesx и imagesy за bmp файловете ми.
Имам предвид следното:
Когато тръгна да качвам bmp файл ми излиза следната грешка

Код:
Warning: imagesx(): supplied argument is not a valid Image resource in /home/image/public_html/process.php on line 185

Warning: imagesy(): supplied argument is not a valid Image resource in /home/image/public_html/process.php on line 186
Съжалявам! Изображение "10.bmp" е твърде малко или твърде голямо.

какво ли непробвах и пак нестава и нестава излиза ми тази грешка независимо, че файла е 700Kb и е 700 х 400 примерно. При всички други формати jpg,gif и png няма проблеми само с bmp :cry:
отчаях се адски много и реших да пиша тук с надеждата някой да помогне.
Ето го и файла process.php:

Код:
<?php
  session_start();
  $session = false;
 
  include("db-info.php");
  $link = mysql_connect($server, $user, $pass);
  if(!mysql_select_db($database)) die(mysql_error());
  
  include("loadsettings.inc.php");

  $type = "public";

   if (isset($_SESSION["imagehost-user"]))
   { 
      $session = true;
      $username = htmlspecialchars($_SESSION["imagehost-user"]);
      $password = htmlspecialchars($_SESSION["imagehost-pass"]);
       
    
      $q = "SELECT id FROM `members` WHERE (username = '$username') and (password = '$password')";
      if(!($result_set = mysql_query($q))) die(mysql_error());
      $number = mysql_num_rows($result_set);
      
      if (!$number) {
         session_destroy();
         $session = false;
      }else {
         $row = mysql_fetch_row($result_set); 
         $loggedId = $row[0];
         
         if (isset($_POST["tags1"])) {

            $opt = htmlspecialchars($_POST['opt']);
            if ($opt == "gallery") {
               $galleryid = htmlspecialchars($_POST["galleryid"]); 
               $result = mysql_query("SELECT type FROM `galleries` WHERE id = '$galleryid'");
               $n = mysql_num_rows($result);
               if (!$n) die();
               $row = mysql_fetch_array($result); 
               $type = $row['type'];
            }
            else {
               if (isset($_POST["private"]))
                  $type = "private";
               else 
                  $type = "public";
            }

         }
      } 

      
   }
   else
      $session = false;

//*************************************************************************************************

?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head> 
<?php include("header.php"); ?>

<center>
<div class="content-container">



 
<?php


function findExtension ($filename)
{
   $filename = strtolower($filename) ;
   $exts = split("[/\\.]", $filename) ;
   $n = count($exts)-1;
   $exts = $exts[$n];
   return $exts;
}


function imagecreatefromunknown($path) {

   $ext = findExtension($path);
    
   switch ($ext) {
      case "jpg":
        $img = imagecreatefromjpeg($path);
        break;
      case "gif":
        $img = imagecreatefromgif($path);
        break;
      case "png":
        $img = imagecreatefrompng($path);
        break;
  }

  return $img;
}



$max = 5;
$total = 0;


if (isset($_POST["tags1"])) {

   $date = date("d-m-y");
   $lastaccess = date("y-m-d");
   $ip= secures($_SERVER['REMOTE_ADDR']);

   //CHECK IF THE IP OF THE PERSON IS BLOCKED OR NOT
   $result = mysql_query("SELECT id FROM `blockedip` WHERE ip = '$ip'");
   $number = mysql_num_rows($result);
   if ($number) die("<center>Съжалявам! Бил си много непослушен и IP адреса ти е блокиран за качване на изображения. <br><br><a href='index.php'>върни се обрадно.</a></center>");


   for ($i=1; $i < ($max+1); $i++)
   {  
      if (trim($_FILES["image" . $i]["name"]) != "")  {
           
           $total = $total + 1;
           if ( (trim($_POST["tags" . $i]) != "") ) {
         
                $tags = secure(trim($_POST["tags" . $i]));
                
                $name = "image" . $i;

                //CHECK IF VALID IMAGE TYPE
                if (( ($_FILES[$name]["type"] == "image/gif")
                   || ($_FILES[$name]["type"] == "image/jpeg")
                   || ($_FILES[$name]["type"] == "image/pjpeg")
                   || ($_FILES[$name]["type"] == "image/x-png")
                   || ($_FILES[$name]["type"] == "image/bmp")
                   || ($_FILES[$name]["type"] == "image/png")))
                {

                $size = intval(($_FILES[$name]["size"] / 1024) / 1024);
                 
                 if ($session == true) 
                    $limit = $maxsizemember;
                 else
                    $limit = $maxsizeguest;  
 
                   if ($size > $limit)
                       die ("<center>Съжалявам! Размерът на изображението, надхвърля $limit Mb максимална граница.</center>");


                   if ($_FILES[$name]["error"] > 0)  {
                       die("Error: " . $_FILES[$name]["error"]);
                   }
                   else {
                       $n = secures($_FILES[$name]["name"]);
                       $rndName = md5($n . date("d-m-y") . time()) . "." . findExtension($n);
                       $uploadPath = "pictures/" . $rndName;
                       $tempPath = secures($_FILES[$name]["tmp_name"]);
                       move_uploaded_file($tempPath, $uploadPath);
                   }

                }
                else
                   die("<center>Съжалявам! \"{$_FILES[$name]["name"]}\" е некъв непознат индивид за мен.</center>");


                $imagePath = $uploadPath;
      
                //********************************************************************************************************

                $img = imagecreatefromunknown($imagePath);
                                  
                $mainWidth = imagesx($img);
                $mainHeight = imagesy($img);
              
                if ($mainWidth > 99) 
                { 
                     
                 $a = ($mainWidth >= $mainHeight) ? $mainWidth : $mainHeight; 
    
                 $div = $a / 140;
                 $thumbWidth = intval($mainWidth / $div);
                 $thumbHeight = intval($mainHeight / $div);


                 $myThumb = imagecreatetruecolor($thumbWidth, $thumbHeight);
                 imagecopyresampled($myThumb, $img, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $mainWidth, $mainHeight);
                 $thumbPath = "thumbnails/" . basename($imagePath);
                 imagejpeg($myThumb, $thumbPath);
                 
                 
                 $details = intval(filesize($imagePath) / 1024) . " kb (" . $mainWidth . " x " . $mainHeight . ")" ; 
                 $id = md5($thumbPath . date("d-m-y") . time());                  

                 //#########################################################################################################

                 if ($session == false) 
                    $q = "INSERT INTO `images`(id, image, thumb, tags, details, date, access, type, ip)
                          VALUES('$id', '$imagePath', '$thumbPath', '$tags', '$details', '$date', '$lastaccess', 'public', '$ip')";
                 else 
                 {
                    if ($opt == "gallery") 
                        $q = "INSERT INTO `images`(id, galleryid, image, thumb, tags, details, date, access, type, ip) 
                             VALUES('$id', '$galleryid', '$imagePath', '$thumbPath', '$tags', '$details', '$date', '$lastaccess', 'gallery', '$ip')";
                    else 
                        $q = "INSERT INTO `images`(id, userid, image, thumb, tags, details, date, access, type, ip)
                             VALUES('$id', '$loggedId', '$imagePath', '$thumbPath', '$tags', '$details', '$date', '$lastaccess', 'member-{$type}', '$ip')";
                 }  
                 
                 if(!($result_set = mysql_query($q))) die(mysql_error());  

                  echo "<center>";
                  echo "<font size=3>качихте <a href=\"show-image.php?id=$id\">$tags</a> ($details)</font><br><br><br>";
          echo "<div class='alt1Active' id='f71' align='center'><div id='tools'><div id='fullsize'><a href='{$imagePath}' title='{$row['tags']}' target='_blank'>пълен размер</a></div>";
          echo "<div id='sharethis'><a id='sharing'>сподели</a><a id='sharing-close' style='display: none;'>сподели</a></div></div>";
          echo "<div id='imagen'><img src='thumb.php?id=$id' border=1></div>";
          echo "<div id='share'><br><br>
        <div id='mostrar_mas_enlaceview'>
            <div align='left'><h2 id='mev'>Миникартинка + <u>публична</u> връзка</h2></div>
            <div class='ctninput'>
                <div class='codex'>HTML:</div><div class='inputshare'>
                <input tabindex='1' value='<a href="{$website}/show-image.php?id=$id"><img src="{$website}/{$thumbPath}" border="0"></a>' onclick='this.focus();this.select();'>
                </div>
            </div>
            <div class='ctninput'>
                <div class='codex'>BBCode (за форуми):</div><div class='inputshare'>
                <input tabindex='2' value='[url={$website}/show-image.php?id={$id}][img]{$website}/{$thumbPath}[/img][/url]' onclick='this.focus();this.select();'>
                </div>
            </div>
        </div>
        
        <div id='mostrar_directa'>
            <div align='left'><h2 id='md'>Покажи пряко изображението</h2></div>
                                    <div class='ctninput'>
                <div class='codex'>Връзка:</div>
                <div class='inputshare'><input tabindex='5' value='{$website}/show-image.php?id=$id' onclick='this.focus();this.select();'></div>
            </div>
                    </div>
            <div class='ctninput'>
                <div class='codex'>Преглед:</div>
                <div class='inputshare'><input tabindex='3' value='{$website}/{$imagePath}' onclick='this.focus();this.select();'></div>
            </div>
            <div class='ctninput'>
                <div class='codex'>BBCode (за форуми):</div>
                <div class='inputshare'><input tabindex='4' value='[img]{$website}/{$imagePath}[/img]' onclick='this.focus();this.select();'></div>
            </div>
		<div id='mostrar_social'>
        <div align='left'><h2 id='mes'>Публикувай това изображение</h2></div>
        <div class='ctninput-social'>
        	<div class='codex'>Публикувай в:</div>
            <a href='http://del.icio.us/post?url={$website}/show-image.php?id=$id' id='delicious' target='_blank'></a>
			<a href='http://www.facebook.com/share.php?u={$website}/show-image.php?id=$id' id='facebook' target='_blank'></a>
            <a href='http://www.google.com/bookmarks/mark?op=edit&bkmk={$website}/show-image.php?id=$id' id='google' target='_blank'></a>
            <a href='http://www.tumblr.com/share?v=3&u={$website}/show-image.php?id=$id' id='tumblr' target='_blank'></a>
            <a href='http://twitter.com/home?status=viendo%20http://tinyurl.com/ylepn2l' id='twitter' target='_blank'></a>
            <a href='http://vi.sualize.us/post/?popup=1&address={$website}/show-image.php?id=$id&referenceURL={$website}' id='visualizeus' target='_blank'></a>
            <div id='quecosa'>
                <span id='d-delicious' style='display: none;'>del.icio.us</span>
                <span id='d-facebook' style='display: none;'>facebook</span>
                <span id='d-google' style='display: none;'>Google Bookmarks</span>
                <span id='d-tumblr' style='display: none;'>tumblr</span>
                <span id='d-twitter' style='display: none;'>Twitt this image</span>
                <span id='d-visualizeus' style='display: none;'>vi.sualize.us</span>
            </div>
        </div>
        </div>
</div>";
  echo "<br></div>";
                 }
                 else
                    echo "<center>Съжалявам! Изображение \"{$_FILES["image" . $i]["name"]}\" е твърде малко или твърде голямо.</center>";   

             }
             else
                    echo "<center>Вие не сте въвели описание на изображението \"{$_FILES["image" . $i]["name"]}\" </center>";  
       }
   }

}

if ($total == 0)
  echo "<center>Съжалявам! Трябва да качите поне едно изображение.</center>";


?>

 

</div><br /><center>
<?php  include("footer.php"); ?></center>

</div>
</center>
</body>
</html>
 
Код:
imagecreatefromunknown($imagePath);
Сигурно не намира файла,и за това дава грешка.
Провери дали $img е FALSE:
Код:
if($img == FALSE)
EDIT:
Като гледам,качваш .bmp а във функцията няма .bmp
Код:
function imagecreatefromunknown($path) {

   $ext = findExtension($path);
   
   switch ($ext) {
      case "jpg":
        $img = imagecreatefromjpeg($path);
        break;
      case "gif":
        $img = imagecreatefromgif($path);
        break;
      case "png":
        $img = imagecreatefrompng($path);
        break;
  }

  return $img;
}
 
Сложих в echo $_FILES[$name]["type"]; кадето дава грешката за размерите и си отчита , че е bmp а ако не намираше файла нямаше да изписва името :idea: нали?

Edit: imagecreatefrombmp няма :)
 
Просто пробвай във функцията imagecreatefromunknown() още едно case
function imagecreatefromunknown($path) {

$ext = findExtension($path);

switch ($ext) {
case "jpg":
$img = imagecreatefromjpeg($path);
break;
case "gif":
$img = imagecreatefromgif($path);
break;
case "png":
$img = imagecreatefrompng($path);
break;
case 'bmp':
$img = imagecreatefromwbmp($path);
break;

}

return $img;
}
 
Добави към функцията си:
Код:
imagecreatefromwbmp();
защото тя не поддържа/определя .bmp формата
 
Е пробвах :) но нестава

ето какво дава:

Код:
Fatal error: Call to undefined function imagecreatefrombmp()
[/code]
 
Моя е грешката, не е imagecreatefrombwmp() а imagecreatefromwbmp() :confused:
 
Нем и това пробвах ето:

Код:
Warning: imagecreatefromwbmp() [function.imagecreatefromwbmp]: 'pictures/b4f05404f68dac1488b6a706f1570850.bmp' is not a valid WBMP file

видял съм се в чудо с това :) цял ден търся къде ми е грешката...
:cry:
 

Back
Горе