Я использую PHP ImageColorAllocate() и imagefill() в загрузке изображения также позволяют PNG файлы имеют белый фон (как в этом посте: imagescreatetruecolor with a white background)PHP GD несколько изображений с белым фоном - предупреждения?
Вот часть кода это касается:
//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']));
возвращает
Array ([0] => 354 [1] => 332 [2] => 2 [3] = > ширина = "354" высота = "332" [бит] => 8 [каналы] => 3 [мим] => изображение/JPEG)
так, все нормально с if($size['2']==3) {$type="jpg";}
...
Спасибо Марка, это линия с imagecopyresized(). Поскольку предупреждение не возникает, если я не использую выделение изображений и imagefill, я думал, что это должно быть из-за них? – Chris
В этом случае возникает предупреждение, но фактическая проблема возникла раньше, когда предыдущий вызов GD завершился неудачно и вернул ложное значение. Вам нужно будет выяснить, какой из аргументов, вызванных копированием, вызывает его (src img, dst img и т. Д.), А затем выяснить, почему он получил ложное значение ранее. –
да, я думаю, как будто это должно быть из-за imagecolorallocate() и imagefill() как одного и того же кода без этих двух вызовов, работает отлично ... поэтому я упомянул о другом вопросе в переполнении стека. Я думал, что мой код точно такой, как есть, но, вероятно, у меня есть некоторая ошибка ... как я могу узнать, что заставляет их терпеть неудачу? – Chris