Napravio sam malo skripticu koja radi upload, resize i postavlja na kraju watermark na fotografiju.
Jedan od uslova je da ime fotografije mora ostati nepromjenjeno i da može sadržati velika/mala slova te čćžšđ, i da na kraju svega treba biti snimljena kao .jpg (mala slova jpg)
Pojavila su mi se dva problema koja nikako ne mogu da riješim:
-
Ukoliko fotografija u imenu ima slova čćžšđ nije problem, međutim ako je neko od tih slova na prvom mijestu i veliko ČĆŽŠĐ skripta ga jednostavno izbriše.
-
Ako je odabrana fotografija u .JPG formatu (veliko JPG) watermark se ne postavi na nju. Ovo je kod koji koristim:
if(isset($_FILES['image'])){ $errors= array(); foreach($_FILES['image']['tmp_name'] as $key => $tmp_name ){ $file_name =$_FILES['image']['name'][$key]; $file_size =$_FILES['image']['size'][$key]; $file_tmp =$_FILES['image']['tmp_name'][$key]; $file_type=$_FILES['image']['type'][$key]; // get file extension $fileType = strtolower(pathinfo($file_name, PATHINFO_EXTENSION)); // get filename without extension $fileNewName = pathinfo($file_name, PATHINFO_FILENAME); $watermarkImagePath = 'images/watermark.png'; $folderPath = "images/upload/"; $sourceProperties = getimagesize($file_tmp); $imageType = $sourceProperties[2]; // Resize code switch ($imageType) { case IMAGETYPE_PNG: $imageResourceId = imagecreatefrompng($file_tmp); $targetLayer = imageResize($imageResourceId,$sourceProperties[0],$sourceProperties[1]); imagepng($targetLayer,$folderPath. $fileNewName. ".jpg"); break; case IMAGETYPE_GIF: $imageResourceId = imagecreatefromgif($file_tmp); $targetLayer = imageResize($imageResourceId,$sourceProperties[0],$sourceProperties[1]); imagegif($targetLayer,$folderPath. $fileNewName. ".jpg"); break; case IMAGETYPE_JPEG: $imageResourceId = imagecreatefromjpeg($file_tmp); $targetLayer = imageResize($imageResourceId,$sourceProperties[0],$sourceProperties[1]); imagejpeg($targetLayer,$folderPath. $fileNewName. ".jpg"); break; default: echo "Invalid Image type."; exit; break; } // watermark $targetFilePath = $folderPath . $file_name; $watermarkImg = imagecreatefrompng($watermarkImagePath); switch($fileType){ case 'jpg': $im = imagecreatefromjpeg($targetFilePath); break; case 'JPG': $im = imagecreatefromjpeg($targetFilePath); break; case 'jpeg': $im = imagecreatefromjpeg($targetFilePath); break; case 'png': $im = imagecreatefrompng($targetFilePath); break; default: $im = imagecreatefromjpeg($targetFilePath); } $marge_right = 1; $marge_bottom = 1; $sx = imagesx($watermarkImg); $sy = imagesy($watermarkImg); imagecopy($im, $watermarkImg, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($watermarkImg), imagesy($watermarkImg)); imagejpeg($im, $targetFilePath,70); imagedestroy($im); } echo ' Uspješan upload'; } function imageResize($imageResourceId,$width,$height) { if($width > $height){ $targetWidth=1000; $targetHeight=($height/$width)*$targetWidth; } else { $targetHeight=1000; $targetWidth=($width/$height)*$targetHeight;} $targetLayer=imagecreatetruecolor($targetWidth,$targetHeight); imagecopyresampled($targetLayer,$imageResourceId,0,0,0,0,$targetWidth,$targetHeight, $width,$height); return $targetLayer; } ?> <div class="sender"> <form action="" method="POST" enctype="multipart/form-data"> <input type="file" name="image[]" multiple/> <input type="submit" value="Pošalji"/> </form></div>
Imate li ideju kako ovo riješiti?