senters Posted October 7, 2010 Report Share Posted October 7, 2010 (edited) Man pagaidām ir f-ja priekš attēla samazināšanas, kur skatās platumu (statisks) un augstumu pieskaņo pēc proporcijas rezultātā visi attēli ir ar vienādu platumu bet dažādiem augstumiem. Vajag - lai uploadojot attēlu tas rāda fjā norādīto augstumu / platumu. Manā gadījumā: 90px platumu un 65px augstumu Patreizējais kods: function make_thumb($src, $dest, $desired_width, $desired_height) { $source_image = imagecreatefromjpeg($src); $width = imagesx($source_image); $height = imagesy($source_image); $newwidth = $desired_width; $newheight = ($height / $width) * $newwidth; if ($width < $desired_width) { $newwidth = $width; } else { $newwidth = $desired_width; } if ($height < $desired_height) { $newheight = $height; } else { $newheight = ($height / $width) * $newwidth; } $tmp = imagecreatetruecolor($newwidth, $newheight); imagecopyresized($tmp, $source_image, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); imagejpeg($tmp, $dest); } Pie inserta: $image_name=$uid.'-'.time().'1'.'.'.$extension; $newname="../Images/Events/Small/".$image_name; $copied = copy($_FILES['att']['tmp_name'], $newname); make_thumb($newname, $newname, 90, 0); // Platums 90px Ja pamaina 90, 65 nestrādā, tāpat tiek ņemts 90 kā platums un automātiski izrēķina augstumu. Labākais variants būtu, ka paņem vajadzīgo platumu (90px) un augstumu neņem no visa attēla proporcionāli, bet tik daudz lai attēls nesakropļotos. Edited October 7, 2010 by senters Link to comment Share on other sites More sharing options...
php newbie Posted October 7, 2010 Report Share Posted October 7, 2010 ja norādisi gan platumu, gan augstumu, tad, ja bildei nav pareiza proporcija, tā izstiepsies. Vai nu vajag taisīt cropu(apgriezt), bet tad ir iespēja ka apgraizīs kadu vajadzīgo bildes gabalu(piem. pusi no sejas). Personīgi es taisu resize pēc lielākas vertības, nu tad sanāk bildes vai nu ar 90 platumu, vai nu ar 65 augstumu. Link to comment Share on other sites More sharing options...
senters Posted October 7, 2010 Author Report Share Posted October 7, 2010 Diemžēl vajag statisku x un y izmēru :( Derētu pat kā raksti, aogriezt. Link to comment Share on other sites More sharing options...
senters Posted October 7, 2010 Author Report Share Posted October 7, 2010 Šo variantu provēšu - http://remysharp.com/wp-content/uploads/2007/03/crop_example.html Link to comment Share on other sites More sharing options...
sheps Posted October 8, 2010 Report Share Posted October 8, 2010 Lūk tev risinājums: function make_thumb($width,$height,$filename,$dfilename){ if(file_exists($filename)){ //Izvelk bildes izmērus list($width_orig, $height_orig) = getimagesize($filename); $width_ = $width_orig; $height_ = $height_orig; $srcX = 0; $srcY = 0; //Vēlamā sīkattēla attiecība $thumbRatio = $width/$height; if($width_orig>$height_orig){ //Orģinālās bildes jaunais platums $width_ = $height_orig*$thumbRatio; $srcX =($width_orig-$width_)/2; //Ja platums neapmierina attiecību, tad orģinālo bildi pielāgo pēc augstuma if($srcX<0){ $srcX = 0; $width_ = $width_orig; $height_ = $width_orig/$thumbRatio; $srcY =($height_orig-$height_)/2; } }else{ //Orģinālās bildes jaunais augstums $height_ = $width_orig/$thumbRatio; $srcY =($height_orig-$height_)/2; //Ja augstums neapmierina attiecību, tad orģinālo bildi pielāgo pēc platuma if($srcY<0){ $srcY = 0; $height_ = $height_orig; $width_ = $height_orig*$thumbRatio; $srcX =($width_orig-$width_)/2; } } //Ieliek bildi jaunajā vietā $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, $srcX, $srcY, $width, $height, $width_, $height_); imagejpeg($image_p, $dfilename, 100); //Parbauda vai izdevās if(file_exists($dfilename)){ return true; }else{ return false; } }else{ return false; } } Link to comment Share on other sites More sharing options...
senters Posted October 8, 2010 Author Report Share Posted October 8, 2010 (edited) Tu tiešām gribi teikt, ka šis skripts man visos gadījumos, neatkarīgi no padotā attēla (ja nav mazāks par 90x65) izveidos statisku izmēru? Kā man tavu fju integrēt iekš mana skripta, varbūt vari plašāk aprakstīt? Edited October 8, 2010 by senters Link to comment Share on other sites More sharing options...
senters Posted October 8, 2010 Author Report Share Posted October 8, 2010 O! Viss strādā, vajadzēja tikai uz šādu nomainīt fjas izsaukšanu: make_thumb(90,65,$newname,$newname); Rezultāts tieši tas ko vajadzēja griež visu uz šo izmēru. Link to comment Share on other sites More sharing options...
Recommended Posts