Beste mensen,

Ik gebruik al jarenlang een script om via een formulier upload een image naar de server te sturen.
Wat ik mis is een CROP functie. Ik zou graag een vaste vierkant van 450 px x 450 px willen hanteren. Soms zijn foto's landscape en als ik dat nu upload dan propt hij met dit script de afbeelding in elkaar.
Kan en wil iemand mij helpen om in mijn huidige script iets te wijzigen of toe te voegen waarmee ik van een landscape afbeelding een vierkant kant uitsnijden? Ik weet dat er tools als croppie bestaat, maar dit vind ik te omslachtig.

$streepje = "-";
$extentie = ".jpg";
$cijfer1 = mt_rand(1, 9);

$newfilename = $Datum . $streepje . $cijfer1 . $extentie;

$change="";
$abc="";

define ("MAX_SIZE","450");
function getExtension($str) {
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
 }

$errors=0;
  
if($_SERVER["REQUEST_METHOD"] == "POST")
   {
      $image = $_FILES['bestand']['name'];
      $uploadedfile = $_FILES['bestand']['tmp_name'];
     
if ($image) 
   {
      $filename = stripslashes($_FILES['bestand']['name']);
      $extension = getExtension($filename);
      $extension = strtolower($extension);
		
if (($extension != "jpg") && ($extension != "jpeg")) 
   {
      $change='<div class="msgdiv">Gebruik ENKEL *.jpg of *.jpeg bestanden!</div> ';
      $errors=1;
   }
   else
   {

$uploadedfile = $_FILES['bestand']['tmp_name'];
$src = imagecreatefromjpeg($uploadedfile);

list($width,$height)=getimagesize($uploadedfile);

$newwidth=450;
$newheight=450;
//$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);

imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);

$filename = $_SERVER['DOCUMENT_ROOT'] . "/img_artiesten/". $_FILES['bestand']['name'];

imagejpeg($tmp,$filename,100);

imagedestroy($tmp);
imagedestroy($src);

}
}
}

rename("$filename", $_SERVER['DOCUMENT_ROOT'] . "/img_artiesten/$newfilename");
Als je het helemaal flexibel wilt hebben dan kan je altijd de uploadclass van Verot.net gebruiken.

Ik heb onvoldoende kennis qua programmeren en gebruik van php.
Om dit wat je oppert te verwerken in mijn huidige situatie is mij te complex.
Wil je me helpen met die CROP optie in mijn huidige script?
Hoezo zou het complex zijn? Heb je het uberhaupt al gezien?
https://www.verot.net/php_class_upload.htm

Hiermee heb je zeker wat flexibels in handen als je de maten aan wit passen, de verhoudingen, of als je wilt croppen.
Een simpele configuratie zorgt ervoor dat alles volgens jouw wensen wordt geconverteerd.

Als je het echt zelf wilt doen, kan je kijken naar [php]imagecrop[/php]

Omdat ik niet begrijp hoe ik dit moet verwerken. En ik hanteer 1 output maat. Dus heb al die andere opties niet nodig. Is het te ingewikkeld om mij in mijn huidige script te helpen?

Mijn tip is om het script denkbeeldig in tweeën te delen. Het deel van het uploaden is niet van toepassing. Vanaf lijn 41 vind in jouw script het bewerken van de afbeelding plaats. Dus dan heb je maar een stuk of tien regels.

Als je kijkt naar het voorbeeld van imagecrop() op php.net dan zie je hoe je dit moet implementeren na je imagecreatefromjpeg() lijn 41.

Over de andere weg gesproken:
Verot.net heeft overigens in het voorbeeld meerdere outputs, maar je kan dit ook beperken tot een enkele.

Wil je me helpen die imagecrop te verwerken in mijn script?
En dat al na 9 seconden, zonder dat je zelf wat geprobeerd heb na mijn tip?
De puzzelstukjes heb je. probeer ze eens in te passen. :-)
Omdat ik het niet begrijp Arien. Ik weet niet wat en hoe. Mijn kennis van php is zo basic. Ik leer van hulp die ik krijg, dan analyseer ik wat ik zie en probeer dat in me op te nemen. Ik snap echt niet wat sommige functies precies doen, dus vind het ingewikkeld om eraan te sleutelen.
Ik begrijp tijdens het programmeren sommige dingen ook niet, maar dan lees ik eerst hoe het werkt, en probeer ik wat met een simpel voorbeeld. En als je functies niet snapt, dan wordt dat op php.net uitgelegd. www.php.net/FUNCTIENAAM

Als je wilt dat ik je help, vertel dan even concreet wat je niet snapt, wat je geprobeerd hebt, en wat er gebeurt.

Tip: Beperk tunnelvisie door een klein voorbeeld te maken i.p.v. in een groot script te werken. En neem ook een pauze tussendoor.
Ik begrijp niet hoe ik precies die imagecrop in mijn script moet toepassen en wat ik dan moet wijzigen of weghalen. Wat doet wat...

Reageren