Viewed   73 times

I am developing a website in PHP that let the user to upload images and then let him to decide how the image should be using jQuery - PHP integeration to select the area that wanted to be the picture and then click the crop button to crop it and save it.

The problem that I am facing is that not all images type are good to crop and save so I noticed that the easy solution for it to convert the image to JPG and then let the user to crop it because it's the easy way to do it in JPG format.

How I can do it?

Is this the best solution for images types problem?


I am using this code to crop images and it's not wroking in PNG format and also limited to 3 ext.

$path_parts = pathinfo("../images/DVDs/".$_POST['logo_file']);
        if ($path_parts['extension'] == "png") {

                $src = imagecreatefrompng("../images/DVDs/".$_POST['logo_file']);

                        $tmp = imagecreatetruecolor(350, 494);
                        imagecopyresampled($tmp, $src, 0,0,$_POST['x'],$_POST['y'],350,494,$_POST['w'],$_POST['h']);
                        imagepng($tmp, "../images/DVDs/$filename".'t_'.$_POST['logo_file'],100);
            } else if ($path_parts['extension'] == "jpg" || $path_parts['extension'] == "jpeg") {

                        $src = imagecreatefromjpeg("../images/DVDs/".$_POST['logo_file']);

                        $tmp = imagecreatetruecolor(350, 494);
                        imagecopyresampled($tmp, $src, 0,0,$_POST['x'],$_POST['y'],350,494,$_POST['w'],$_POST['h']);
                        imagejpeg($tmp, "../images/DVDs/$filename".'t_'.$_POST['logo_file'],100);
                } else if ($path_parts['extension'] == "gif") {

                        $src = imagecreatefromgif("../images/DVDs/".$_POST['logo_file']);

                        $tmp = imagecreatetruecolor(350, 494);
                        imagecopyresampled($tmp, $src, 0,0,$_POST['x'],$_POST['y'],350,494,$_POST['w'],$_POST['h']);
                        imagegif($tmp, "../images/DVDs/$filename".'t_'.$_POST['logo_file'],100);

I want to convert images to JPG format because it's the easiest to convert without any problem.



Maybe it's not working with PNG because PNG only supports compression levels 0 to 9.

I'd also rather modify the behaviour based on MIME type, not extension. And I guess you're checking your POST user input before using it in code ;)

Here's my variant of the code:

$path = "../images/DVDs/";

$img = $path . $_POST['logo_file'];

if (($img_info = getimagesize($img)) === FALSE)
  die("Image not found or not an image");

switch ($img_info[2]) {
  case IMAGETYPE_GIF  : $src = imagecreatefromgif($img);  break;
  case IMAGETYPE_JPEG : $src = imagecreatefromjpeg($img); break;
  case IMAGETYPE_PNG  : $src = imagecreatefrompng($img);  break;
  default : die("Unknown filetype");

$tmp = imagecreatetruecolor(350, 494);
imagecopyresampled($tmp, $src, 0, 0, intval($_POST['x']), intval($_POST['y']),
                   350, 494, intval($_POST['w']), intval($_POST['h']));

$thumb = $path . pathinfo($img, PATHINFO_FILENAME) . "_thumb";
switch ($img_info[2]) {
  case IMAGETYPE_GIF  : imagegif($tmp,  $thumb . '.gif');      break;
  case IMAGETYPE_JPEG : imagejpeg($tmp, $thumb . '.jpg', 100); break;
  case IMAGETYPE_PNG  : imagepng($tmp,  $thumb . '.png', 9);   break;
  default : die("Unknown filetype");

For every filetype you want supported, you only have to add two lines of code.

Thursday, October 6, 2022

I tend to use a framework of one description or another, which cover's the file upload part. However, do have a recommendation for the cropping bit:

Imagine -

And if you want to make the uploader a tiny bit better than just an input type=file, try:

Saturday, December 24, 2022

simply call this function ..with param source ,destination and size what u want :)

function cropImage($source,$dest,$whsize) {

                $size = getimagesize($source);
                $w = $size[0];
                $h = $size[1];

                if($xratio > $yratio)$multiplier=$xratio;
                else $multiplier=$yratio;

                switch($size[2]) {
                    case '1':
                    $simg = imagecreatefromgif($source);
                    case '2':
                    $simg = imagecreatefromjpeg($source);
                    case '3':
                    $simg = imagecreatefrompng($source);

                $dimg = imagecreatetruecolor($nw, $nh);

                $wm = $w/$nw;
                $hm = $h/$nh;

                $h_height = $nh/2;
                $w_height = $nw/2;

                if($w> $h) {

                    $adjusted_width = $w / $hm;
                    $half_width = $adjusted_width / 2;
                    $int_width = $half_width - $w_height;


                } elseif(($w <$h) || ($w == $h)) {

                    $adjusted_height = $h / $wm;
                    $half_height = $adjusted_height / 2;
                    $int_height = $half_height - $h_height;


                } else {
Sunday, October 23, 2022

There are comparison operators for the DateTime class in php . Something like this :


$d1 = new DateTime('2008-08-03 14:52:10');
$d2 = new DateTime('2008-01-03 11:11:10');
var_dump($d1 == $d2);
var_dump($d1 > $d2);
var_dump($d1 < $d2);


Saturday, August 20, 2022

Using ffmpeg can be helpful. For details

Sunday, November 27, 2022
Only authorized users can answer the search term. Please sign in first, or register a free account.
Not the answer you're looking for? Browse other questions tagged :