Я делаю проект социальных сетей, где у меня есть возможность добавлять / редактировать фотографии. Когда пользователь нажимает кнопку, изображение будет загружено в базу данных, и оно будет обновлено … возможно ли обрезать изображение до того, как оно будет сохранен в базе данных.
просто вызовите эту функцию. с параметром source, destination и size, что вам нужно 🙂
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); }
На стороне клиента я бы рекомендовал JCrop .
Конечно, переместите файл из каталога загрузок и где-нибудь в каталог temp, сохраните это местоположение в своем сеансе, затем отобразите его обратно и дайте им обрезать его перед тем, как перенести его в свою производственную зону и вставить в базу данных.