我有以下两条路线: -
Route::get('resize/avatar', function() {
$image = 'avatar.jpg';
$target_filename_here = 'thumbnail_'.$image;
$ffs = imagecreatefromjpeg($image);
$size = getimagesize($image);
$dst = imagecreatetruecolor(100,100);
$dds = imagecopyresampled($dst,$ffs,0,0,0,0,100,100,$size[0],$size[1]);
$dn = imagepng($dst,$target_filename_here); // adjust format as needed
imagedestroy($ffs);
imagedestroy($dst);
if($dds) {
return Redirect::to('color/');
} else {
return 'Failed to load the Profile Picture';
}
});
Route::get('color/', function() {
if(file_exists('thumbnail_avatar.jpg')) {
$dest = imagecreatefrompng('transcript.png');
$fn = imagecreatefromjpeg('thumbnail_avatar.jpg');
imagecopy($dest, $fn, 550, 830, 0, 0, imagesx($fn), imagesy($fn));
imagejpeg($dest,"test4.jpg",90);
imagedestroy($dest);
imagedestroy($fn);
return HTML::image('test4.jpg');
} else {
return Redirect::to('resize/avatar');
}
});
我收到错误的标题,我想弄清楚,我在哪里创建一个问题,但找不到它。
My Framework,我使用的是“Laravel 4.2”,但我很确定,它与框架无关,因为函数是纯php。
TL的我正在尝试创建个人资料图片的缩略图,而不是将其合并到另一个图片。在这样做时,我得到: - imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error:
我已经搜索过stackoverflow和google一样的错误,但是我无法找到并调试。
更新
由于
常见问题: -
内存限制? ==>我有足够的记忆。
在函数中使用“@”隐藏错误? ==>没关系。我仍然面临这个问题。
你试过另一张图片吗? ==>是的,我尝试了其他图像,并且我成功地做到了这一点,它只会产生“生成缩略图”的问题。
我的问题请尝试自己,使用以下脚本进行非laravel: -
function resizeImage() {
$image = 'avatar.jpg';
$target_filename_here = 'thumbnail_'.$image;
$ffs = imagecreatefromjpeg($image);
$size = getimagesize($image);
$dst = imagecreatetruecolor(100,100);
$dds = imagecopyresampled($dst,$ffs,0,0,0,0,100,100,$size[0],$size[1]);
$dn = imagepng($dst,$target_filename_here); // adjust format as needed
imagedestroy($ffs);
imagedestroy($dst);
if($dds) {
color();
} else {
return 'Failed to load the Profile Picture';
}
}
function colorCheck() {
if(file_exists('thumbnail_avatar.jpg')) {
$dest = imagecreatefrompng('transcript.png');
$fn = imagecreatefromjpeg('thumbnail_avatar.jpg');
imagecopy($dest, $fn, 550, 830, 0, 0, imagesx($fn), imagesy($fn));
imagejpeg($dest,"test4.jpg",90);
imagedestroy($dest);
imagedestroy($fn);
return HTML::image('test4.jpg');
} else {
resizeImage();
}
}
你可以看到错误。
由于
答案 0 :(得分:3)
我知道我有点晚了,但我遇到了类似的问题,这让我发疯了。
回答你的问题“......我想弄清楚,我在哪里创建一个问题”......错误正在
创建$ffs = imagecreatefromjpeg($image);
这个错误来自执行这行代码,上传图像jpg然后使用PHP GD2库
我按照下面链接中的解决方案解决了我的问题。
我希望有人会觉得这很有用并节省一些时间。感谢来自anvilstudios的Nico
<强>更新强> 对于那些无法访问链接的人,这里是代码
$file_tempname = null;
if (is_uploaded_file($FILE['tmp_name'])) {
$file_tempname = $FILE['tmp_name'];
}
else{
exit('Wrong file type');
}
$file_dimensions = getimagesize($file_tempname);
$file_type = strtolower($file_dimensions['mime']);
if ($file_type=='image/jpeg'||$file_type=='image/pjpeg'){
if(imagecreatefromjpeg($file_tempname)){
$ffs = imagecreatefromjpeg($file_tempname);
return $ffs;
}
}
答案 1 :(得分:0)
我找到的解决方案如下:
$file_dimensions = getimagesize($_SERVER['DOCUMENT_ROOT'] . $fileUrl);
$ImageType = strtolower($file_dimensions['mime']);
switch(strtolower($ImageType))
{
case 'image/png':
$img_r = imagecreatefrompng($_SERVER['DOCUMENT_ROOT'] . $fileUrl);
break;
case 'image/jpeg':
$img_r = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'] . $fileUrl);
break;
default:
die('Unsupported File!'); //output error
}