Я использую php imagecolorallocate () и imagefill () при загрузке изображений, чтобы файлы png также имели белый фон (как в этом посте: imagescreatetruecolor с белым фоном )
Вот часть кода, к которой он относится:
//create new images
$nimgac_0=imagecreatetruecolor($maxw_img0,$maxh_img0); //img1
$nimgac_1=imagecreatetruecolor($maxw_img1,$maxh_img1); //img2
$nimgac_2=imagecreatetruecolor($maxw_img2,$maxh_img2); //img3
$nimgaa_0=imagecolorallocate($nimgac_0,255,255,255);
$nimgaa_1=imagecolorallocate($nimgac_1,255,255,255);
$nimgaa_2=imagecolorallocate($nimgac_2,255,255,255);
$nimga_0=imagefill($nimgac_0,0,0,$nimgaa_0);
$nimga_1=imagefill($nimgac_1,0,0,$nimgaa_1);
$nimga_2=imagefill($nimgac_2,0,0,$nimgaa_2);
//create images from temp folder
if ($type=="jpg") {
$nimgb_0=imagecreatefromjpeg("../imga/".$_FILES['file']['name']);
$nimgb_1=imagecreatefromjpeg("../imga/".$_FILES['file']['name']);
$nimgb_2=imagecreatefromjpeg("../imga/".$_FILES['file']['name']);
}
if ($type=="png") {
$nimgb_0=imagecreatefrompng("../imga/".$_FILES['file']['name']);
$nimgb_1=imagecreatefrompng("../imga/".$_FILES['file']['name']);
$nimgb_2=imagecreatefrompng("../imga/".$_FILES['file']['name']);
}
imagecopyresized($nimga_0,$nimgb_0,0,0,0,0,$nwidth_0,$nheight_0,$width,$height);
imagecopyresized($nimga_1,$nimgb_1,0,0,0,0,$nwidth_1,$nheight_1,$width,$height);
imagecopyresized($nimga_2,$nimgb_2,0,0,0,0,$nwidth_2,$nheight_2,$width,$height);
imagejpeg($nimga_0,"../imga/".$_FILES['file']['name'],80);
imagejpeg($nimga_1,"../imga/".$imgname_1,80);
imagejpeg($nimga_2,"../imga/".$imgname_2,80);
но я получаю это предупреждение:
Предупреждение: imagecopyresized () ожидает, что параметр 1 будет ресурсом,
логическое значение в ... в строке 114
Предупреждение: imagecopyresized () ожидает, что параметр 1 будет ресурсом,
логическое значение в ... в строке 115
Предупреждение: imagecopyresized () ожидает, что параметр 1 будет ресурсом,
логическое значение в ... в строке 116
Предупреждение: imagejpeg () ожидает, что параметр 1 будет ресурсом, учитывая логическое значение
в ... на линии 117
Предупреждение: imagejpeg () ожидает, что параметр 1 будет ресурсом, учитывая логическое значение
в ... на линии 118
Предупреждение: imagejpeg () ожидает, что параметр 1 будет ресурсом, учитывая логическое значение
в ... на линии 119
Предупреждение: imagedestroy () ожидает, что параметр 1 будет ресурсным, логическое значение
дано в ... в строке 120
Предупреждение: imagedestroy () ожидает, что параметр 1 будет ресурсным, логическое значение
дано ... по линии 121
Предупреждение: imagedestroy () ожидает, что параметр 1 будет ресурсным, логическое значение
дано в ... в строке 122
Тот же код без immagecolorallocate () и imagefill () работает отлично. Тем не менее, я не могу найти ни ошибок, ни каких-либо различий в приведенном выше коде.
У кого-нибудь есть идеи? Заранее спасибо!
PS: я хочу сохранить все изображения в формате jpg, поэтому я также конвертирую pngs в jpg.
РЕДАКТИРОВАТЬ 3 (извините, я запутался):
print_r(getimagesize($_FILES['file']['tmp_name']));
возвращает
Массив ([0] => 354 [1] => 332 [2] => 2 [3] => ширина = "354" высота = "332" [биты] => 8 [каналов] => 3 [mime] => image / jpeg)
итак, все нормально с if($size['2']==3) {$type="jpg";}
...