I would like to upload png images transparent, I tried many things via google but still didnt work, still background is black. Here is my code, it is written in symfony 2.7. It is uploading and creating two images, one is small, the second is big.
So here you can see difference between images before upload and after upload.
if ($upload_type == 'image/png' || $upload_type == 'image/jpg' || $upload_type == 'image/jpeg' || $upload_type == 'image/gif') {
$filename = stripslashes($upload_name);
$extension = $this->getExtension($filename);
$extension = strtolower($extension);
if ($extension == "jpg" || $extension == "jpeg") {
$upload_temp = $_FILES['form-chat-send-image']['tmp_name'];
$src = imagecreatefromjpeg($upload_temp);
} else if ($extension == "png") {
$upload_temp = $_FILES['form-chat-send-image']['tmp_name'];
$src = imagecreatefrompng($upload_temp);
} else {
$src = imagecreatefromgif($upload_temp);
}
list($width, $height) = getimagesize($upload_temp);
$newWidth1 = $width;
$newHeight1 = $height;
if($width>1200 || $height>1200) {
if ($height < $width) {
$newWidth1 = 1200;
$newHeight1 = ($height / $width) * $newWidth1;
} else {
$newHeight1 = 1200;
$newWidth1 = ($width / $height) * $newHeight1;
}
}
$tmp1 = imagecreatetruecolor($newWidth1, $newHeight1);
$newWidth2 = $width;
$newHeight2 = $height;
if($width>220 || $height>220) {
if ($height < $width) {
$newWidth2 = 220;
$newHeight2 = ($height / $width) * $newWidth2;
} else {
$newHeight2 = 220;
$newWidth2 = ($width / $height) * $newHeight2;
}
}
$tmp2 = imagecreatetruecolor($newWidth2, $newHeight2);
imagecolortransparent($tmp2, imagecolorallocate($tmp2, 0, 0, 0));
imagealphablending( $tmp2, false );
imagesavealpha( $tmp2, true );
imagecopyresampled($tmp1, $src, 0, 0, 0, 0, $newWidth1, $newHeight1,
$width, $height);
imagecopyresampled($tmp2, $src, 0, 0, 0, 0, $newWidth2, $newHeight2,
$width, $height);
$dateName = new \DateTime();
$newName = $conversation->getId().'-'.$dateName->format('m_d_Y_H_i_s');
$filename1 = $uploadTo . $newName . "." . $extension;
$filename2 = $uploadTo . "small/" . $newName . "." . $extension;
imagejpeg($tmp1, $filename1, 100);
imagejpeg($tmp2, $filename2, 100);
imagedestroy($src);
imagedestroy($tmp1);
imagedestroy($tmp2);
$uploadDB = $newName . "." . $extension;
$msgImg = new Message();
$msgImg->setText($uploadDB);
$msgImg->setConversation($conversation);
$msgImg->setForm('img');
if($type==2){
$msgImg->setType(0);
}
else if($type==1){
$msgImg->setType(1);
}
$em->persist($msgImg);
$em->flush();
$_FILES = array();
return $this->redirect($this->generateUrl('conversation',array('id'=>$conversation->getId())));
}