2013-12-06 3 views
2

Я пытаюсь исправить/отладить сайт, где все изображения на сайте генерируются скриптом. Другой разработчик создал это. Теперь все изображения по какой-то причине не работают.Как отлаживать создание образа

Я пытаюсь отладить код и попытаться сломать его где-нибудь, где он должен работать, чтобы затем я мог видеть, что сломал и стабилизировал базовый уровень. Но я не могу найти способ отладить это правильно.

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

Update: Спасибо Pekka 웃 комментарии теперь я могу увидеть ошибку, и он говорит Warning: imagejpeg(): Filename cannot be empty in /var/www/vhosts/mysticindia.co.uk/httpdocs/inc/class.images.php on line 496

, что линия является imagejpg(), что после линии

if ($imageModify == "grey") { 
        imagefilter($this->imageResized, IMG_FILTER_GRAYSCALE); 
       } 

КОД

<?php 
class images { 
    var $imageID; 
    var $imageData; 
    var $image; 
    var $width; 
    var $height; 
    var $imageResized; 

    function __construct($imageID = null) { 
     if ($imageID !== null) { 
      $this->imageID = $imageID; 
      $this->imageData = $this->getImageInfo(); 
     } 
    } 

    function removeImage() { 
     if ($this->imageID) { 
      $query = "DELETE FROM Images "; 
      $query .= "WHERE ImageID = '%s' "; 
      $result = RunQuery($query,__LINE__); 
      $query = sprintf($query, mysql_real_escape_string($this->imageID)); 
      $result = RunQuery($query,__LINE__); 
      tableEmpty("Images"); 
     } 
    } 

    private function buildImageQuery($options=array()) { 
     global $maxItems; 
     $maxItems = ((isset($options["maxItems"])) && (!empty($options["maxItems"]))) ? $options["maxItems"] : $maxItems; 
     $pageID = isset($options["pageID"]) ? $options["pageID"] : ""; 
     $orderBy = ((isset($options["orderBy"])) && (!empty($options["orderBy"]))) ? $options["orderBy"] : "ImageIndex"; 
     $sortBy = ((isset($options["sortBy"])) && (!empty($options["sortBy"]))) ? $options["sortBy"] : "ASC"; 
     $groupBy = (isset($options["groupBy"])) ? $options["groupBy"] : ""; 
     $groupBy = (isset($options["groupBy"])) ? $options["groupBy"] : ""; 
     $limit = isset($options["limit"]) ? $options["limit"] : ""; 
     $searchArray = isset($options["searchArray"]) ? $options["searchArray"] : ""; 
     $recordOffset = ($pageID - 1) * $maxItems; 

     $query = "SELECT SQL_CALC_FOUND_ROWS i.ImageID, ImageName, ImageIndex FROM Images i "; 
     $query .= "WHERE i.ImageID != '0' "; 
     if ((isset($searchArray["catalogue"])) && (!empty($searchArray["catalogue"]))) { 
      $query .= "AND Catalogue = '" . $searchArray["catalogue"] . "' "; 
     } 
     if ((isset($searchArray["catalogueID"])) && (!empty($searchArray["catalogueID"]))) { 
      if (is_array($searchArray["catalogueID"])) { 
       $count = 0; 
       $query .= "AND ("; 
       foreach ($searchArray["catalogueID"] as $catalogueID) { 
        $count++; 
        $query .= "CatalogueID= '" . $catalogueID . "' "; 
        if ($count < count($searchArray["catalogueID"])) { 
         $query .= "OR ";  
        } 
       } 
       $query .= ") "; 
      } else { 
       $query .= "AND CatalogueID= '" . $searchArray["catalogueID"] . "' "; 
      } 
     } 
     if ((isset($searchArray["imageName"])) && (!empty($searchArray["imageName"]))) { 
      $query .= "AND ImageName = '" . $searchArray["imageName"] . "' "; 
     } 
     if ((isset($groupBy)) && (!empty($groupBy))) { 
      $query .= "GROUP BY " . $groupBy . " "; 
     } 
     if ((isset($groupBy)) && (!empty($groupBy))) { 
      $query .= "GROUP BY " . $groupBy . " "; 
     } 
     if ($orderBy) { 
      $query .= "ORDER BY $orderBy $sortBy "; 
     } 
     if (($pageID) && (empty($limit))) { 
      $query .= "LIMIT $recordOffset, $maxItems "; 
     } else if (!empty($limit)) { 
      $query .= "LIMIT $limit "; 
     } 
     return $query; 
    } 

    function getImages($options=array()) { 
     global $maxItems; 
     $maxItems = ((isset($options["maxItems"])) && (!empty($options["maxItems"]))) ? $options["maxItems"] : $maxItems; 
     $pageID = isset($options["pageID"]) ? $options["pageID"] : ""; 
     $recordOffset = ($pageID - 1) * $maxItems; 
     $dataArray = array(); 
     $listArray = array(); 
     $maxPages = 0; 

     $query = $this->buildImageQuery($options); 
     $result = RunQuery($query,__LINE__); 

     if (($pageID) && (empty($limit))) { 
      $query2 = "SELECT FOUND_ROWS() AS NoItems "; 
      $result2 = RunQuery($query2); 
      $row2 = mysql_fetch_assoc($result2); 
      $maxPages = ceil($row2["NoItems"]/$maxItems); 
     } 
     if (mysql_num_rows($result) != 0) { 
      while ($row = mysql_fetch_assoc($result)) { 
       $listArray[] = $row["ImageID"]; 
      } 
      $dataArray["maxPages"] = $maxPages; 
      $dataArray["results"] = $listArray; 
      return $dataArray; 
     } 

    } 

    function listImages($options=array()) { 
     $query = $this->buildImageQuery($options); 
     $result = RunQuery($query,__LINE__); 

     if (mysql_num_rows($result)) { 
      $dataArray = array(); 
      while ($row = mysql_fetch_assoc($result)) { 
       $key = $row["ImageID"]; 
       $value = $row["ImageName"]; 
       $dataArray[$key] = $value; 
      } 
      return $dataArray; 
     } else { 
      return false; 
     } 
    } 

    function manageImage($options=array()) { 
     global $sesAdminID; 
     $imageInfo = isset($options["imageInfo"]) ? $options["imageInfo"] : ""; 
     $catalogue = isset($options["catalogue"]) ? $options["catalogue"] : ""; 
     $catalogueID = isset($options["catalogueID"]) ? $options["catalogueID"] : ""; 
     $imageCaption = isset($options["imageCaption"]) ? $options["imageCaption"] : ""; 
     $imageName = isset($imageInfo["imageName"]) ? $imageInfo["imageName"] : ""; 
     $imageWidth = isset($imageInfo["imageWidth"]) ? $imageInfo["imageWidth"] : ""; 
     $imageHeight = isset($imageInfo["imageHeight"]) ? $imageInfo["imageHeight"] : ""; 
     $imageType = isset($imageInfo["imageType"]) ? $imageInfo["imageType"] : "image/jpeg"; 
     $imageIndex = isset($imageInfo["imageIndex"]) ? $imageInfo["imageIndex"] : ""; 

     if ($this->imageID) { 
      $query = "UPDATE Images SET "; 
      $query .= "ImageName = '%s', "; 
      $query .= "ImageWidth = '%s', "; 
      $query .= "ImageHeight = '%s', "; 
      $query .= "ImageType = '%s', "; 
      $query .= "Catalogue = '%s', "; 
      $query .= "CatalogueID = '%s', "; 
      $query .= "ImageCaption = '%s', "; 
      $query .= "ImageIndex = '%s' "; 
      $query .= "WHERE ImageID = '" . $this->imageID . "' "; 
     } else { 
      $query = "INSERT INTO Images SET "; 
      $query .= "ImageName = '%s', "; 
      $query .= "ImageWidth = '%s', "; 
      $query .= "ImageHeight = '%s', "; 
      $query .= "ImageType = '%s', "; 
      $query .= "Catalogue = '%s', "; 
      $query .= "CatalogueID = '%s', "; 
      $query .= "ImageCaption = '%s', "; 
      $query .= "ImageIndex = '%s' "; 
     } 
     $query = sprintf($query, mysql_real_escape_string($imageName), 
     mysql_real_escape_string($imageWidth), 
     mysql_real_escape_string($imageHeight), 
     mysql_real_escape_string($imageType), 
     mysql_real_escape_string($catalogue), 
     mysql_real_escape_string($catalogueID), 
     mysql_real_escape_string($imageCaption), 
     mysql_real_escape_string($imageIndex)); 
     $result = RunQuery($query,__LINE__); 
     $this->imageID = (!empty($this->imageID)) ? $this->imageID : mysql_insert_id(); 
     return $this->imageID; 
    } 

    function updateCaption($imageCaption) { 
     $query = "UPDATE Images SET "; 
     $query .= "ImageCaption = '%s' "; 
     $query .= "WHERE ImageID = '%s' "; 
     $query = sprintf($query, mysql_real_escape_string($imageCaption), 
     mysql_real_escape_string($this->imageID)); 
     $result = RunQuery($query,__LINE__); 
    } 

    function reOrderImages($options=array()) { 
     $catalogue = isset($options["catalogue"]) ? $options["catalogue"] : ""; 
     $catalogueID = isset($options["catalogueID"]) ? $options["catalogueID"] : ""; 
     $sortOrder = isset($options["sortOrder"]) ? str_replace("Image_", "", $options["sortOrder"]) : ""; 
     if (!empty($sortOrder)) { 
      $sortArray = explode(",", $sortOrder); 
      foreach ($sortArray as $order => $imageID) { 
       $query = "UPDATE Images SET "; 
       $query .= "ImageIndex = '%s' "; 
       $query .= "WHERE ImageID = '%s' "; 
       $query .= "AND Catalogue = '%s' "; 
       $query .= "AND CatalogueID = '%s' "; 
       $query = sprintf($query, mysql_real_escape_string($order), 
             mysql_real_escape_string($imageID), 
             mysql_real_escape_string($catalogue), 
             mysql_real_escape_string($catalogueID)); 
       $result = RunQuery($query,__LINE__); 
      } 
     } 
    } 

    function returnImageType($options=array()) { 
     $imageName = ((isset($options["imageName"])) && (!empty($options["imageName"]))) ? $options["imageName"] : ""; 
     $imageType = ((isset($options["imageType"])) && (!empty($options["imageType"]))) ? $options["imageType"] : ""; 
     // Image Extensions 
     $imgExt["pjpeg"] = "jpg"; 
     $imgExt["jpeg"] = "jpg"; 
     $imgExt["gif"] = "gif"; 
     $imgExt["png"] = "png"; 
     $imgExt["jpg"] = "jpg"; 

     // Image Types 
     $imgType["pjpeg"] = "jpeg"; 
     $imgType["jpeg"] = "jpeg"; 
     $imgType["jpg"] = "jpeg"; 
     $imgType["gif"] = "gif"; 
     $imgType["png"] = "png"; 

     if ($imageType) { 
      $tempImageType = explode("/", strtolower($imageType)); 
      $tempImageType = str_replace(" ", "", $tempImageType[count($tempImageType)-1]); 
     } else if ($imageName) { 
      $tempImageType = explode("/", strtolower($imageName)); 
      $tempImageType = explode(".", $tempImageType[count($tempImageType)-1]); 
      $tempImageType = $tempImageType[count($tempImageType)-1]; 
     } else { 
      return ""; 
     } 

     $resizeInfo = array(); 
     $resizeInfo["imageType"] = isset($imgType[$tempImageType]) ? $imgType[$tempImageType] : "jpeg"; 
     $resizeInfo["imageExt"] = isset($imgExt[$tempImageType]) ? $imgExt[$tempImageType] : "jpg"; 
     return $resizeInfo; 
    } 

    function createImageName($imageFolder,$imageName) { 
     global $documentRoot; 
     if (file_exists($documentRoot . $imageFolder . $imageName)) { 
      $imageName = strtotime("now") . "_" . $imageName; 
     } 
     return $imageName; 
    } 

    function uploadImage($options=array()) { 
     global $documentRoot, $imageFolder, $maxImageW; 
     $imageInfo = array(); 
     $imageLocal = ((isset($options["tmp_name"])) && (!empty($options["tmp_name"]))) ? $options["tmp_name"] : ""; 
     $imageType = ((isset($options["type"])) && (!empty($options["type"]))) ? $options["type"] : ""; 
     $imageName = ((isset($options["name"])) && (!empty($options["name"]))) ? $options["name"] : ""; 
     $imageSize = ((isset($options["size"])) && (!empty($options["size"]))) ? $options["size"] : ""; 
     $functionArray = array("imageName"=>$imageName,"imageType"=>$imageType); 
     $imageTypeInfo = $this->returnImageType($functionArray); 
     $tempImageType = $imageTypeInfo["imageType"]; 
     $tempImageExt = $imageTypeInfo["imageExt"]; 

     $row = getimagesize($imageLocal); 
     $width = $row[0]; 
     $height = $row[1]; 
     $imageName = $this->createImageName($imageFolder,fileNameFix($imageName) . "." . $tempImageExt); 

     if ($width <= $maxImageW) { 
      copy($imageLocal, $documentRoot . $imageFolder . $imageName); 
      $imageInfo["imageWidth"] = $width; 
      $imageInfo["imageHeight"] = $height; 
     } else { 
      $functiontoRun = "imagecreatefrom" . $tempImageType; 
      $this->image = $functiontoRun($imageLocal); 
      $functionArray = array("origWidth"=>$width,"origHeight"=>$height,"imageWidth"=>$maxImageW); 
      $resizeImage = $this->resizeImage($functionArray); 
      $newImageWidth = $resizeImage["CanvasWidth"]; 
      $newImageHeight = $resizeImage["CanvasHeight"]; 
      $image = imagecreatetruecolor($newImageWidth, $newImageHeight); 
      imagecopyresampled($image, $this->image, 0, 0, 0, 0, $newImageWidth, $newImageHeight, $width, $height); 
      $functiontoRun = "image" . $tempImageType; 
      @$functiontoRun($image, $documentRoot . $imageFolder . $imageName) or die("can not create image"); 
      $imageInfo["imageWidth"] = $newImageWidth; 
      $imageInfo["imageHeight"] = $newImageHeight; 
     } 
     $imageInfo["imageType"] = $imageType; 
     $imageInfo["imageName"] = $imageName; 
     return $imageInfo; 
    } 

    function uploadImages($options=array()) { 
     $catalogue = isset($options["catalogue"]) ? $options["catalogue"] : ""; 
     $catalogueID = isset($options["catalogueID"]) ? $options["catalogueID"] : ""; 
     $newImages = isset($options["newImages"]) ? $options["newImages"] : ""; 
     $functionArray = array("searchArray"=>$options); 
     $imageIndex = $this->returnImageIndex($functionArray); 
     foreach ($newImages as $newImage) { 
      $imageIndex++; 
      $imageCaption = $newImage["caption"]; 
      $imageInfo = $this->uploadImage($newImage); 
      $functionArray = array("imageCaption"=>$imageCaption,"imageInfo"=>$imageInfo,"catalogue"=>$catalogue,"catalogueID"=>$catalogueID,"imageIndex"=>$imageIndex); 
      $this->imageID = 0; 
      $this->manageImage($functionArray); 
     } 
    } 

    private function getDimensions($newWidth, $newHeight, $option) { 
     switch ($option) { 
      case 'exact': 
       $optimalWidth = $newWidth; 
       $optimalHeight= $newHeight; 
      break; 
      case 'portrait': 
       $optimalWidth = $this->getSizeByFixedHeight($newHeight); 
       $optimalHeight= $newHeight; 
      break; 
      case 'landscape': 
       $optimalWidth = $newWidth; 
       $optimalHeight= $this->getSizeByFixedWidth($newWidth); 
      break; 
      case 'auto': 
       $optionArray = $this->getSizeByAuto($newWidth, $newHeight); 
       $optimalWidth = $optionArray['optimalWidth']; 
       $optimalHeight = $optionArray['optimalHeight']; 
      break; 
      case 'square': 
       $optionArray = $this->getOptimalCrop($newWidth, $newHeight); 
       $optimalWidth = $optionArray['optimalWidth']; 
       $optimalHeight = $optionArray['optimalHeight']; 
      break; 
     } 
     return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight); 
    } 

    private function getSizeByFixedHeight($newHeight) { 
     $ratio = $this->width/$this->height; 
     $newWidth = $newHeight * $ratio; 
     return $newWidth; 
    } 

    private function getSizeByFixedWidth($newWidth) { 
     $ratio = $this->height/$this->width; 
     $newHeight = $newWidth * $ratio; 
     return $newHeight; 
    } 

    private function getSizeByAuto($newWidth, $newHeight) { 
     if ($this->height < $this->width) { 
      $optimalWidth = $newWidth; 
      $optimalHeight= $this->getSizeByFixedWidth($newWidth); 
     } elseif ($this->height > $this->width) { 
      $optimalWidth = $this->getSizeByFixedHeight($newHeight); 
      $optimalHeight= $newHeight; 
     } else { 
      if ($newHeight < $newWidth) { 
       $optimalWidth = $newWidth; 
       $optimalHeight= $this->getSizeByFixedWidth($newWidth); 
      } else if ($newHeight > $newWidth) { 
       $optimalWidth = $this->getSizeByFixedHeight($newHeight); 
       $optimalHeight= $newHeight; 
      } else { 
       // *** Sqaure being resized to a square 
       $optimalWidth = $newWidth; 
       $optimalHeight= $newHeight; 
      } 
     } 
     return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight); 
    } 

    private function getOptimalCrop($newWidth, $newHeight) { 
     $heightRatio = $this->height/$newHeight; 
     $widthRatio = $this->width/$newWidth; 
     if ($heightRatio < $widthRatio) { 
      $optimalRatio = $heightRatio; 
     } else { 
      $optimalRatio = $widthRatio; 
     } 
     $optimalHeight = $this->height/$optimalRatio; 
     $optimalWidth = $this->width/$optimalRatio; 
     return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight); 
    } 

    private function crop($optimalWidth, $optimalHeight, $newWidth, $newHeight) { 
     // *** Find center - this will be used for the crop 
     $optionArray["cropStartX"] = ($optimalWidth/2) - ($newWidth /2); 
     $optionArray["cropStartY"] = ($optimalHeight/ 2) - ($newHeight/2); 
     return $optionArray; 
    } 


    public function resizeImage($options=array()) { 
     $imageCrop = ((isset($options["imageCrop"])) && (!empty($options["imageCrop"]))) ? $options["imageCrop"] : "landscape"; 
     $this->width = ((isset($options["origWidth"])) && (!empty($options["origWidth"]))) ? $options["origWidth"] : 0; 
     $this->height = ((isset($options["origHeight"])) && (!empty($options["origHeight"]))) ? $options["origHeight"] : 0; 
     $newWidth = ((isset($options["imageWidth"])) && (!empty($options["imageWidth"]))) ? $options["imageWidth"] : 0; 
     $newHeight = ((isset($options["imageHeight"])) && (!empty($options["imageHeight"]))) ? $options["imageHeight"] : 0; 
     if ((empty($newHeight)) && ($imageCrop == "square")) { 
      $newHeight = $newWidth; 
     } 
     // *** Get optimal width and height - based on $option 
     $optionArray = $this->getDimensions($newWidth, $newHeight, $imageCrop); 
     if ($imageCrop == 'square') { 
      $tempOptions = $this->crop($optionArray["optimalWidth"], $optionArray["optimalHeight"], $newWidth, $newHeight); 
      $optionArray["cropStartX"] = $tempOptions["cropStartX"]; 
      $optionArray["cropStartY"] = $tempOptions["cropStartY"]; 
     } 
     $optionArray["CanvasWidth"] = $newWidth; 
     $optionArray["CanvasHeight"] = (!empty($newHeight)) ? $newHeight : $optionArray["optimalHeight"]; 
     return $optionArray; 
    } 

    function showImage($options=array()) { 
     global $documentRoot, $imageFolder; 
     $imageSize = ((isset($options["imageSize"])) && (!empty($options["imageSize"]))) ? $options["imageSize"] : ""; 
     $imageCrop = ((isset($options["imageCrop"])) && (!empty($options["imageCrop"]))) ? $options["imageCrop"] : ""; 
     $imageType = ((isset($options["imageType"])) && (!empty($options["imageType"]))) ? $options["imageType"] : ""; 
     $imageName = ((isset($options["imageName"])) && (!empty($options["imageName"]))) ? $options["imageName"] : ""; 
     $imageModify = ((isset($options["imageModify"])) && (!empty($options["imageModify"]))) ? $options["imageModify"] : ""; 
     $imageQuality = ((isset($options["imageQuality"])) && (!empty($options["imageQuality"]))) ? $options["imageQuality"] : 100; 
     $imageFolder = ((isset($options["imageFolder"])) && (!empty($options["imageFolder"]))) ? $options["imageFolder"] : $imageFolder; 
     if (($imageType) || ($imageSize) || ($imageCrop)) { 
      if ((!empty($imageSize)) && (!empty($imageType))) { 
       $imageSize .= ucfirst($imageType); 
      } else if ((empty($imageSize)) && (!empty($imageType))) { 
       $imageSize .= strtolower($imageType); 
      } 
      $imageSize .= (!empty($imageCrop)) ? ucfirst($imageCrop) : ""; 
      $tempWidth = lcfirst($imageSize . "W"); 
      $tempHeight = lcfirst($imageSize . "H"); 
      global $$tempWidth, $$tempHeight; 
      $maxWidth = isset($$tempWidth) ? $$tempWidth : 0; 
      $maxHeight = isset($$tempHeight) ? $$tempHeight : 0; 
     } 
     if (empty($maxWidth)) { 
      $tempWidth = "maxImageW"; 
      $tempHeight = "maxImageH"; 
      global $$tempWidth, $$tempHeight; 
      $maxWidth = isset($$tempWidth) ? $$tempWidth : 0; 
      $maxHeight = isset($$tempHeight) ? $$tempHeight : 0; 
     } 
     if (empty($this->imageID)) { 
      $searchArray = array("imageName"=>$imageName); 
      $functionArray = array("searchArray"=>$searchArray); 
      $this->imageID = $this->returnImageID($functionArray); 
     } 
     $imageData = $this->getImageInfo(); 
     if (is_array($imageData)) { 
      $imageName = $imageData["ImageName"]; 
      $width = $imageData["ImageWidth"]; 
      $height = $imageData["ImageHeight"]; 
      $imageType = $imageData["ImageType"]; 
     } else { 
      $imageType = ""; 
     } 
     $functionArray = array("imageName"=>$imageName,"imageType"=>$imageType); 
     $imageTypeInfo = $this->returnImageType($functionArray); 
     $tempImageType = $imageTypeInfo["imageType"]; 
     $tempImageExt = $imageTypeInfo["imageExt"]; 
     $thisImage = $documentRoot . $imageFolder . $imageName; 
     if (file_exists($thisImage)) { 
      if ((empty($width)) || (empty($height))) { 
       $row = getimagesize($thisImage); 
       $width = $row[0]; 
       $height = $row[1]; 
      } 
      if ((isset($maxWidth)) && (($width > $maxWidth) || ($height > $maxHeight))) { 
       $functiontoRun = "imagecreatefrom" . $tempImageType; 
       $this->image = $functiontoRun($thisImage); 
       if (!$this->image) { 
        $this->image = imagecreatefromjpeg($thisImage); 
       } 
       $functionArray = array("imageCrop"=>$imageCrop,"origWidth"=>$width,"origHeight"=>$height,"imageWidth"=>$maxWidth,"imageHeight"=>$maxHeight); 
       $resizeImage = $this->resizeImage($functionArray); 
       $optimalWidth = $resizeImage['optimalWidth']; 
       $optimalHeight = $resizeImage['optimalHeight']; 
       $canvasWidth = $resizeImage["CanvasWidth"]; 
       $canvasHeight = $resizeImage["CanvasHeight"]; 
       $cropStartX = isset($resizeImage["cropStartX"]) ? $resizeImage["cropStartX"] : 0; 
       $cropStartY = isset($resizeImage["cropStartY"]) ? $resizeImage["cropStartY"] : 0; 

       // *** Resample - create image canvas of x, y size 
       $this->imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight); 
       $background = imagecolorallocate($this->imageResized, 255, 255, 255); 
       imagefill ($this->imageResized, 0, 0, $background); 
       imagecopyresampled($this->imageResized, $this->image, 0, 0, 0, 0, $optimalWidth, $optimalHeight, $this->width, $this->height); 

       // *** if option is 'crop', then crop too 
       if ($imageCrop == 'square') { 
        $crop = $this->imageResized; 
        //imagedestroy($this->imageResized); 
        // *** Now crop from center to exact requested size 
        $this->imageResized = imagecreatetruecolor($canvasWidth , $canvasHeight); 
        imagecopyresampled($this->imageResized, $crop , 0, 0, $cropStartX, $cropStartY, $canvasWidth, $canvasHeight , $canvasWidth, $canvasHeight); 
       } 
       if ($imageModify == "grey") { 
        imagefilter($this->imageResized, IMG_FILTER_GRAYSCALE); 
       } 
       header("Content-type: image/$tempImageType"); 
       imagejpeg($this->imageResized, "", $imageQuality); 
       exit(); 
      } else { 
       header("Content-type: image/$tempImageType"); 
       $image = imagecreatefromjpeg($thisImage); 
       imagejpeg($image); 
       exit(); 
      } 
     } 
     else { 
      header("HTTP/1.0 404 Not Found"); 
      exit(); 
     } 
    } 

    private function grayscale($r, $g, $b) { 
     return (($r*0.299)+($g*0.587)+($b*0.114)); 
    } 

    function returnImageID($options=array()) { 
     $imageID = 0; 
     $query = $this->buildImageQuery($options); 
     $result = RunQuery($query,__LINE__); 
     if (mysql_num_rows($result) != 0) { 
      $row = mysql_fetch_assoc($result); 
      $imageID = $row["ImageID"]; 
     } 
     return $imageID; 
    } 

    function returnImageIndex($options=array()) { 
     $imageIndex = 0; 
     $query = $this->buildImageQuery($options); 
     $result = RunQuery($query,__LINE__); 
     if (mysql_num_rows($result) != 0) { 
      $row = mysql_fetch_assoc($result); 
      $imageIndex = $row["ImageIndex"]; 
     } 
     return $imageIndex; 
    } 

    private function getImageInfo() { 
     $query = "SELECT ImageID, ImageName, ImageWidth, ImageHeight, ImageType, Catalogue, CatalogueID, ImageCaption, ImageIndex FROM Images i "; 
     $query .= "WHERE ImageID= '%s' "; 
     $query = sprintf($query, mysql_real_escape_string($this->imageID)); 
     $result = RunQuery($query,__LINE__); 
     if (mysql_num_rows($result) != 0) { 
      return mysql_fetch_assoc($result); 
     } 
    } 
} 
?> 
+3

Первый шаг: удалите строки 'header (« Content-type ... »), чтобы вы могли видеть ошибки непосредственно в браузере при вызове изображения (вместо ресурса с поврежденным изображением). –

+0

Когда вы говорите« Теперь все изображения по какой-то причине не работают ». Что вы имеете в виду? Разбиты ли ссылки на изображения? Сохраняются ли изображения в файловой системе? Или, может быть, хранится в базе данных? Каково базовое ожидаемое поведение? И что говорят журналы? – JakeGould

+0

Убедитесь, что вы также указали ошибки ini_set ('display_errors', 1); – Gavin

ответ

0

Пока вы заявляете:

Я пытаюсь исправить/отладить сайт, где все изображения на сайте составляют , сгенерированные скриптом.

Глядя на этот кусок кода подразумевает, что изображения для сайта на самом деле хранятся в файловой системе, в некотором роде с помощью этой file_exists() проверки:

$thisImage = $documentRoot . $imageFolder . $imageName; 
    if (file_exists($thisImage)) { 
     if ((empty($width)) || (empty($height))) { 
      $row = getimagesize($thisImage); 
      $width = $row[0]; 
      $height = $row[1]; 
     } 
     if ((isset($maxWidth)) && (($width > $maxWidth) || ($height > $maxHeight))) { 
      $functiontoRun = "imagecreatefrom" . $tempImageType; 
      $this->image = $functiontoRun($thisImage); 
      if (!$this->image) { 
       $this->image = imagecreatefromjpeg($thisImage); 
      } 

Кроме того, глядя на тонны повторяющегося кода в сочетании с этим нечетным набором тестов if ( я бы сосредоточился на коде function showImage($options=array()) {.

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

Загрузка URL вроде этого:

http://www.mysticindia.co.uk/images/galleries/small/square/JCxTPFAsMGBgCmA.jpg 

Показывает ошибку, я предполагаю, что исходит от вашей отладки-как это:

_image.phpA: Resource ID # 11 Предупреждения: imagejpeg (JC0jQFgsMGBgCmA.jpg): не удалось открыть поток: Разрешение отказано в /var/www/vhosts/mysticindia.co.uk/httpdocs/inc/class.images.php на линии 496

failed to open stream говорит мне, что, пока вы говорите, что изображения генерируются скриптом, взаимодействие файловой системы явно происходит в какой-то момент.

Тогда эта ошибка:

Разрешение отказано в /var/www/vhosts/mysticindia.co.uk/httpdocs/inc/class.images.php на линии 496

Кажется сказать мне, что ошибка не в вашем коде, а в разрешениях файловой системы.Кажется, что сценарий действительно создает производные миниатюры & другие версии родительского изображения. Но в какой-то момент сценарий каким-то образом кэширует их в файловую систему. Непонятно, откуда берутся исходные изображения: BLOB в базе данных, но сейчас мой лучший совет - посмотреть права на файловую систему для сайта &, если что-то изменится.

Я имею в виду, что вы - или другие - не скрутили этот сценарий, но он прекратил работать? Бьюсь об заклад, вы все, что каталог, используемый этим скриптом для кеширования, больше не существует или имеет неправильное право собственности или разрешения. Что-то вроде этого задушит этот процесс.

+0

ошибка, которую вы видите при не открывшемся потоке, - это когда я попытался поместить некоторое имя в функцию, поскольку исходная ошибка заключается в том, что она должна иметь имя. –

+0

Но посмотрите на это: 'Warning: imagejpeg (JC0jQFgsMGBgCmA.jpg): не удалось открыть поток' Это 'JC0jQFgsMGBgCmA.jpg' - явно кэшированное имя файла, сгенерированное скриптом. Всякий раз, когда это сохраняется или открывается, проблема. – JakeGould

+0

Я поместил JC0jQFgsMGBgCmA.jpg, чтобы проверить, не вложу ли я имя, которое он будет притворяться. исходная ошибка: 'Warning: imagejpeg(): имя файла не может быть пустым в /var/www/vhosts/mysticindia.co.uk/httpdocs/inc/class.images.php в строке 497'. –

Смежные вопросы