John
John

Reputation: 4981

Phalcon PNG to JPG and remove transparent background image

I'm using Phalcon PHP Phalcon\Images\Adapter\GD and I have a problem with the PNG to JPG.

When I upload a PNG image on my server, I resize this image, I set the background color in white with the background method $myImage->background('#FFFFFF') but this background is now black... I don't understand why and after I split the extension .PNG and I add .JPG.

How can I do to set the background color image to white ?

Upvotes: 3

Views: 611

Answers (1)

Mr. Engineer
Mr. Engineer

Reputation: 3515

Try this it worked for me :

function img_resize($file,$width=0,$height=0,$proportional=false,$output='file' ) {

        if ( $height <= 0 && $width <= 0 ) return false;
        # Setting defaults and meta
        $info= getimagesize($file);
        $image= '';
        $final_width= 0;
        $final_height= 0;
        list($width_old, $height_old) = $info;
        # Calculating proportionality
        if ($proportional) {
          if      ($width  == 0)  $factor = $height/$height_old;
          elseif  ($height == 0)  $factor = $width/$width_old;
          else                    $factor = min( $width / $width_old, $height / $height_old );
          $final_width  = round( $width_old * $factor );
          $final_height = round( $height_old * $factor );
        }
        else {
          $final_width = ( $width <= 0 ) ? $width_old : $width;
          $final_height = ( $height <= 0 ) ? $height_old : $height;
        }
        # Loading image to memory according to type
        switch ( $info[2] ) {
          case IMAGETYPE_GIF:   $image = imagecreatefromgif($file);   break;
          case IMAGETYPE_JPEG:  $image = imagecreatefromjpeg($file);  break;
          case IMAGETYPE_PNG:   $image = imagecreatefrompng($file);   break;
          default: return false;
        }
        # This is the resizing/resampling/transparency-preserving magic
        $image_resized = imagecreatetruecolor( $final_width, $final_height );
        if ( ($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG) ) {
          $transparency = imagecolortransparent($image);
          if ($transparency >= 0) {
            $transparent_color  = imagecolorsforindex($image, $trnprt_indx);
            $transparency       = imagecolorallocate($image_resized, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
            imagefill($image_resized, 0, 0, $transparency);
            imagecolortransparent($image_resized, $transparency);
          }
          elseif ($info[2] == IMAGETYPE_PNG) {
            imagealphablending($image_resized, false);
            $color = imagecolorallocatealpha($image_resized, 0, 0, 0, 127);
            imagefill($image_resized, 0, 0, $color);
            imagesavealpha($image_resized, true);
          }
        }
        imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $final_width, $final_height, $width_old, $height_old);
        # Preparing a method of providing result
        switch ( strtolower($output) ) {
          case 'browser':
            $mime = image_type_to_mime_type($info[2]);
            header("Content-type: $mime");
            $output = NULL;
          break;
          case 'file':
            $output = $file;
          break;
          case 'return':
            return $image_resized;
          break;
          default:
          break;
        }
        # Writing image according to type to the output destination
        switch ( $info[2] ) {
          case IMAGETYPE_GIF:   imagegif($image_resized, $output);    break;
          case IMAGETYPE_JPEG:  imagejpeg($image_resized, $output);   break;
          case IMAGETYPE_PNG:   imagepng($image_resized, $output);    break;
          default: return false;
        }
        return true;
    }

Call function like below :

$image = new Phalcon\Image\Adapter\GD(YOUR_IMAGE_PATH);
$a=img_resize($image->getRealpath(),$image->getWidth(),$image->getHeight());

Some code might not necessary for you.

Upvotes: 0

Related Questions