How to crop an image while uploading?

孤街浪徒 提交于 2019-12-12 09:47:40

问题


I am doing an social networking project ,where i have an option to add/edit photos ,When user clicks the button the image will be uploaded to the database and it will be updated...is it possible to crop the image before it is saved to the database.


回答1:


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];
                $xratio=$w/$whsize;
                $yratio=$h/$whsize;

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

                $nw=$w/$multiplier;
                $nh=$h/$multiplier;
                switch($size[2]) {
                    case '1':
                    $simg = imagecreatefromgif($source);
                    break;
                    case '2':
                    $simg = imagecreatefromjpeg($source);
                    break;
                    case '3':
                    $simg = imagecreatefrompng($source);
                    break;
                }

                $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;

                    imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);

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

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

                    imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);

                } else {
                    imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);
                }
             $dest=$dest.'jpeg';
                imagejpeg($dimg,$dest,100);
        }       



回答2:


On the client side I'd recommend JCrop.




回答3:


Sure, move the file out of the uploads directory and into a temp directory somewhere, store that location in their session, then display it back to them and let them crop it before you move it to your production area and insert it into the database.



来源:https://stackoverflow.com/questions/3263966/how-to-crop-an-image-while-uploading

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!