用于创建缩略图的部分工作功能

时间:2015-12-29 05:58:17

标签: php image thumbnails

我有一个用于制作缩略图的部分工作功能,但是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)

?>

注意:这里有一些不起作用的其他$ image:

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

注意:是的,我确信它们都在上传文件夹中 - 我已经检查过并仔细检查过,所以我现在很困惑......

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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.