How to replace black background with white when resizing/converting PNG images with transparent backgrounds to JPEG. How to replace black background with white when resizing/converting PNG images with transparent backgrounds to JPEG. php php

How to replace black background with white when resizing/converting PNG images with transparent backgrounds to JPEG.


switch($image_extension){  case 'gif':  case 'GIF':    $image_orig_resource = imagecreatefromgif($image_orig_path);    break;  case 'png':  case 'PNG':    $image_orig_resource = imagecreatefrompng($image_orig_path);    break;  case 'jpg':  case 'jpeg':  case 'JPG':  case 'JPEG':    $image_orig_resource = imagecreatefromjpeg($image_orig_path);    break;  default:    throw new Exception('Extension not supported');}$image_resource = imagecreatetruecolor($width, $height);imagefill($image_resource, 0, 0, imagecolorallocate($image_resource, 255, 255, 255));  // white background;imagecopyresampled($image_resource, $image_orig_resource, 0, 0, 0, 0, $width, $height, $image_orig_width, $image_orig_height);imagejpeg($image_resource, $image_path, 100); // quality: [0-100]


I found this other similar question here on this site. I hope it is helpful.

adding background color to transparent images using gd and php


Ok, this function is from php. As I've never worked with images on php, so I didn't know it.

So, images a composed of three colors: RGB (red, green, blue). In case of PNG, it's also composed of another filter, called alpha, which is the transparency

SO, just for PNG, you should switch imagecolorallocate to imagecolorallocatealpha($file,$i,$i,$i,$i);

This should make your images transparent. Does this solve your problem or do you really need them in white background?

Edit:I also noted that you are using imagejpg function in all cases. Switch them to the corresponding function, i.e., imagepng, imagebmp, imagegif