我正在将图片上传到服务器。无论我上传图像的格式如何,都应该转换为.png格式,但在我的情况下,它会给出以下错误,我正在使用codeigniter。在核心php中,它正常工作。
Message: Division by zero Filename: controllers/Upload_user_image.php
消息:imagecreatetruecolor()[function.imagecreatetruecolor]: 图片尺寸无效
消息:imagesavealpha()期望参数1是资源,布尔值 给定
消息:imagecolorallocatealpha()期望参数1是资源, 给定布尔值
消息:imagefill()期望参数1是资源,布尔给定
Message: imagecopyresampled() expects parameter 1 to be resource, boolean given > Message: Undefined variable: c_image
消息:imagepng()期望参数1为资源,布尔值为
控制器:
function do_upload()
{
$cimg = $_FILES['user_file']['tmp_name'];
$extension = pathinfo($cimg, PATHINFO_EXTENSION);
$srcFile_c = $_FILES['user_file']['tmp_name'];
/*function imageToPng($srcFile, $maxSize = 100) {*/
list($width_orig, $height_orig, $type) = getimagesize($srcFile_c);
$maxSize = 100;
// Get the aspect ratio
$ratio_orig = $width_orig / $height_orig;
$width = $maxSize;
$height = $maxSize;
// resize to height (orig is portrait)
if ($ratio_orig < 1)
{
$width = $height * $ratio_orig;
}
// resize to width (orig is landscape)
else
{
$height = $width / $ratio_orig;
}
// Temporarily increase the memory limit to allow for larger images
ini_set('memory_limit', '32M');
$u_name='pawan';
switch (@$type)
{
case IMAGETYPE_GIF:
$c_image = imagecreatefromgif($srcFile_c);
break;
case IMAGETYPE_JPEG:
$c_image = imagecreatefromjpeg($srcFile_c);
break;
case IMAGETYPE_PNG:
$c_image = imagecreatefrompng($srcFile_c);
break;
default:
throw new Exception('Unrecognized image type ' . @$type);
}
// create a new blank image
$new_c_Image = imagecreatetruecolor($width, $height);
imagesavealpha($new_c_Image, true);
$trans_colour = imagecolorallocatealpha($new_c_Image, 0, 0, 0, 127);
imagefill($new_c_Image, 0, 0, $trans_colour);
imagecopyresampled($new_c_Image, $c_image, 0, 0, 0, 0, $width, $height, $width_orig,$height_orig);
$getpng = imagepng($new_c_Image, './uploads/' . "img_" . $u_name . '.png');
}
这是我的表格:
<?php echo form_open_multipart('Upload_user_image/do_upload');?>
<input type="file" name="userfile" />
<input type="text" name="password"/>
<input type="submit" value="upload" />
</form>
答案 0 :(得分:1)
首先将任何格式上传到某个虚拟文件夹,然后尝试将文件格式更改为png
。
if ($imageFileType == "jpg") {
$jpg = "path to dummy jpg image folder";
imagepng(imagecreatefromstring(file_get_contents($jpg)), "path where you want to store png images");
unlink($jpg);
} else if ($imageFileType == "jpeg") {
$jpg = "path to dummy jpeg image folder";
imagepng(imagecreatefromstring(file_get_contents($jpg)),"path where you want to store png images");
unlink($jpg);
}
注意:您可以合并两种类型,但请确保提供正确的扩展。