2015-12-29 2 views
2

У меня есть частично работающая функция для создания миниатюр, но 10% изображений не создаются в виде эскизов, и они одинаковые 10%. Остальные 90% работают. Однако я не знаю, почему. Пожалуйста, обратите внимание на мой код:Частично работающая функция для создания эскизов

<?php 

$image = "511photo.jpg"; 

if ($image) { 
make_thumb("uploads", "thumbnails", $image, 500); 
} 

function make_thumb($imageFrom, $imageTo, $image, $thumbWidth) { 

/* read the source image */ 
$getFrom = $imageFrom."/".$image; 

$source_image = imagecreatefromjpeg($getFrom); 
$width = imagesx($source_image); 
$height = imagesy($source_image); 

/* find the "desired height" of this thumbnail, relative to the desired width */ 
$thumbHeight = floor($height * ($thumbWidth/$width)); 

/* create a new, "virtual" image */ 
$virtual_image = imagecreatetruecolor($thumbWidth, $thumbHeight); 

/* copy source image at a resized size */ 
imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $width, $height); 

/* create the physical thumbnail image to its destination */ 

$dest = $imageTo."/".$image; 
imagejpeg($virtual_image, $dest); 

} //end of function make_thumb($imageFrom, $imageTo, $image, $thumbWidth) 

?> 

Примечание: Вот несколько других $ изображения, не работает:

"434cute-anime-couple-drawing-on-tumblr.png" 
"503anime_head_vectorized_by_cona_cru-d784ls0.png" 

Примечание: Да, я уверен, что все они в uploads folder - я проверил и дважды проверил так честно, прямо сейчас я так запутался ...

+0

вы используете imagejpeg функцию детские расширения не будет поддерживать, пожалуйста, посмотри попытаться найти как загрузить для PNG файлов – rahul

ответ

1

Это потому, что вы используете imagecreatefromjpeg() для изображения png. Для этих изображений вам нужно использовать imagecreatefrompng().

$source_image = imagecreatefrompng($getFrom); 

Для проверки типа изображения вы можете использовать exif_imagetype() функции:

$imageType = exif_imagetype($getFrom); 

if($imageType == IMAGETYPE_PNG) { 
    //It's PNG 
} elseif($imageType == IMAGETYPE_JPEG) { 
    //It's JPEG 
} //You can check more types here. 
+0

Почему я могу сделать миниатюры из большинства jpg? И 511photo.jpg - это jpg, но я не мог сделать из него эскиз. – jessica

+0

Can u Pls добавьте фотографию здесь или сообщите нам ссылку? –

+0

https://www.iscattered.com/uploads/511photo.jpg – jessica

1

проверить тип файла и добавить этот код с помощью функции imagejpeg в условии, чтобы его пример добавлял ваши переменные и значения

if($fileType=="image/png"){ 
    $im=ImageCreateFromPNG($add); 
    $width=ImageSx($im);    // Original picture width is stored 
    $height=ImageSy($im);    // Original picture height is stored 
    $newimage=imagecreatetruecolor($n_width,$n_height);     
    imageCopyResized($newimage,$im,0,0,0,0,$n_width,$n_height,$width,$height); 
    ImagePng($newimage,$tsrc); 
    chmod("$tsrc",0777); 
} 
+0

но 511photo. jpg - это jpg, и он не работает, хотя другие jpgs работают – jessica

+0

Как я могу заставить его поддерживать все типы изображений? – jessica

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