imagecreatefrompng 不工作
Posted
技术标签:
【中文标题】imagecreatefrompng 不工作【英文标题】:imagecreatefrompng not working 【发布时间】:2012-06-04 11:36:21 【问题描述】:我正在尝试创建图像的缩略图,但我发现使用下面的代码只能将 JPG 图像转换为缩略图;它不适用于 PNG 和 GIF。我做错了什么?
function createThumbs( $pathToImages,$pathToThumbs,$thumbWidth,$fname)
// open the directory
// $dir = opendir( $pathToImages );
// parse path for the extension
$info = pathinfo($pathToImages);
// continue only if this is a JPEG image
//if ( strtolower($info['extension']) == 'jpg' )
//
//echo "Creating thumbnail for $fname <br />";
echo strtolower($info['extension']);
switch(strtolower($info['extension']))
case 'jpg':
$img = imagecreatefromjpeg("$pathToImages" );
break;
case 'gif':
$img = imagecreatefromgif("$pathToImages" );
break;
case 'png':
$img = imagecreatefrompng("$pathToImages" );
break;
default:
die("ERROR: FILE TYPE DOES NOT SUPPORT");
break;
// load image and get image size
$width = imagesx( $img );
$height = imagesy( $img );
// calculate thumbnail size
$new_width = $thumbWidth;
$new_height = floor( $height * ( $thumbWidth / $width ) );
// create a new temporary image
$tmp_img = imagecreatetruecolor( $new_width, $new_height );
// copy and resize old image into new image
imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );
// save thumbnail into a file
imagejpeg( $tmp_img, "$pathToThumbs$fname" );
chmod("$pathToThumbs$fname",777);
【问题讨论】:
请定义“不起作用”的含义。您执行了哪些case
语句,哪些有效,哪些无效,是否有任何错误?
你是怎么调用这个函数的?从变量名看来,$pathToImages
应该是一个 PATH,文件名应该在 $fname
中。 $pathToImages
实际上是文件名吗?是的,让我们知道您看到了什么错误。
它不会为 png 和 gif 图像创建缩略图。但是 jpg 缩略图正在生成。我正在调用如下函数: createThumbs("../images/sliders/".$image1_newname,"../images/sliders/thumbs/",570,$image1_newname); chmod("../images/sliders/thumbs/".$image1_newname,777);
【参考方案1】:
您面临的问题是由于这一行:
// save thumbnail into a file
imagejpeg( $tmp_img, "$pathToThumbs$fname" );
php imagejpeg 会将图像保存为 Jpeg。
您需要使用适当的功能来保存每种文件类型。另外您需要控制输出文件类型扩展名,如果不是联合图像专家组文件,.jpeg
将不会被占用。
处理文件扩展名
PHP image_type_to_extension 的 cmets 上有一些很好的例子!
处理保存过程
imagewbmp
// Save the image as a WBMP
imagewbmp( $tmp_img, "$pathToThumbs$fname" . '.wbmp' );
imagewbmp() 输出或保存给定图像的 WBMP 版本。
imagegif
// Save the image as a GIF
imagegif( $tmp_img, "$pathToThumbs$fname" . '.gif' );
imagegif() 从图像图像文件名中创建 GIF 文件。
imagepng
// Save the image as a PNG
imagepng( $tmp_img, "$pathToThumbs$fname" . '.png' );
imagepng — 将 PNG 图像输出到浏览器或文件。
【讨论】:
【参考方案2】: $new_images = $_FILES["profilepic"]["name"];
$width = 400; //*** Fix Width & Heigh (Autu caculate) ***//
$size = GetimageSize($images);
$height = round($width * $size[1] / $size[0]);
list($origwidth, $origheight, $origtype, $origattr) = getimagesize($images);
$origfiletype = image_type_to_extension($origtype, true);
// $filetype includes the dot.
$supported = array('.jpeg', '.png', '.gif');
//check file type
if (in_array($origfiletype, $supported))
if ('.jpeg' == $origfiletype)
$images_orig = ImageCreateFromJPEG($images);
else if ('.png' == $origfiletype)
try
$images_orig = ImagecreateFromPNG($images);
catch (Exception $e)
echo $e->getMessage();
exit;
else if ('.gif' == $origfiletype)
try
$images_orig = ImagecreateFromGIF($images);
catch (Exception $e)
echo $e->getMessage();
exit;
$photoX = ImagesX($images_orig);
$photoY = ImagesY($images_orig);
$images_fin = ImageCreateTrueColor($width, $height);
ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width + 1, $height + 1, $photoX, $photoY);
ImageJPEG($images_fin, dirname(__FILE__) . "/gallery/" . $new_images, $jpeg_quality);
ImageDestroy($images_orig);
ImageDestroy($images_fin);
【讨论】:
请提供某种解释说明这应该如何提供帮助,而不仅仅是发布一段代码。以上是关于imagecreatefrompng 不工作的主要内容,如果未能解决你的问题,请参考以下文章