2012-03-30 3 views
0

Это скрипт thumnbail, над которым я работаю, и заканчивается тем, что создает поврежденное 33-байтное изображение. Я думаю, что проблема заключается в выражении exif_imagetype if, но я не уверен. Буду признателен за любую помощь.PHP создает поврежденный thumnbail

// Original image 
    $filename = 'images/T' . $neutralName; 

    // Get dimensions of the original image 
    list($current_width, $current_height) = getimagesize($filename); 

    // The x and y coordinates on the original image where we 
    // will begin cropping the image 
    $left = 10; 
    $top = 5; 

    // This will be the final size of the image (e.g. how many pixels 
    // left and down we will be going) 
    $crop_width = 140; 
    $crop_height = 100; 

    // Resample the image 
    $canvas = imagecreatetruecolor($crop_width, $crop_height); 
    if ((exif_imagetype($_FILES['photo']['tmp_name'])) == IMAGETYPE_JPEG) { 
     $current_image = imagecreatefromjpeg($filename); 
     imagecopy($canvas, $current_image, 0, 0, $left, $top, $current_width, $current_height); 
     imagejpeg($canvas, $filename, 100); 
    } else if ((exif_imagetype($_FILES["photo"]['tmp_name'])) == IMAGETYPE_GIF) { 
     $current_image = imagecreatefromgif($filename); 
     imagecopy($canvas, $current_image, 0, 0, $left, $top, $current_width, $current_height); 
     imagegif($canvas, $filename, 100); 
    } else { 
     $current_image = imagecreatefrompng($filename); 
     imagecopy($canvas, $current_image, 0, 0, $left, $top, $current_width, $current_height); 
     imagepng($canvas, $filename, 100); 
    } 
+0

Есть ли еще код? Что вы делаете с $ canvas после этого утверждения? – mikevoermans

+2

Что внутри этого изображения? Может быть, это 33 символа сообщения об ошибке? –

+1

Весь код прямо там, холст определен прямо над операторами if. И да, я считаю, что есть 33 символа ошибки. Он продолжает думать, что любая картина представляет собой PNG, поэтому означает, что он не выполняет первый и второй тесты, хотя это может быть JPG. – Ramin

ответ

0

Я думаю, ваша проблема в том, что вы пытаетесь открыть файл, который не существует или не является изображением ... В каждом из ваших каждый, вы находите тип файла с помощью $_FILES["photo"]['tmp_name'] но ниже, если условие истинно, вы используете imagecreatefromXXX($filename). Разве вы не должны открывать загруженный файл изображения, а не путь, по которому вы сохраняете изображение? Открытие пути $filename (при условии, что он существует) всегда будет копировать тот же самый квадрат и сохранить его. Не похоже на то, что вы будете делать.

+0

Вы совершенно правы, я исправил его сейчас. Вместо того, чтобы проверять исходную картинку и видеть, что это JPG или PNG или что-то еще, я собираюсь проверить имя файла, чтобы увидеть, какой тип изображения он есть. Я уже тестировал его, и он работает. Благодаря тонну! Это просто то, о чем я был слеп. – Ramin

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