Kom ihåg mig?
Home Menu

Menu


PHP Bildbearbetning

Ämnesverktyg Visningsalternativ
Oläst 2008-03-06, 10:14 #1
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Tjena,
har ett litet dilemma, har en kund som ligger på webbhotellet one.com (skit hotell) och jag har byggt ett bild galleri åt kunden.
När kunden laddar upp bilder så skapas två filer, en 100 x 100 px och en 500 x ? px bild.

Problemet är att, eller jag tror efter lite bråk med One's support att deras memory_limit är för låg. Att beskära och bearbeta bilder med PHP tar en hel del resurser, det vet vi. Men hur kan man lösa detta. One vägrar att öka sin limit på memory_limit.

memory_limit ligger för tillfället på 12 MB och jag har bara problem när jag laddar upp bilder som är större än 1100 px breda.

Det som verkar vara stopp klossen är ImageCreateFromJpeg()

Kan man lösa detta på annat sätt?

http://hotelpictures.com
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-03-06, 10:15 #2
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Här har ni funktionen jag använder mig av för att beskära bilderna. Fungerar helt smärtfritt på alla andra webbhotell jag kör på.

Kod:
function resizeImage($src, $dst, $dstx, $dsty){


$allowedExtensions = 'jpg jpeg gif png';

$name = explode(".", $src);
$currentExtensions = $name[count($name)-1];
$extensions = explode(" ", $allowedExtensions);

for($i=0; count($extensions)>$i; $i=$i+1){
if($extensions[$i]==$currentExtensions)
{ $extensionOK=1; 
$fileExtension=$extensions[$i]; 
break; }
}

if($extensionOK){

$size = getImageSize($src);
$width = $size[0];
$height = $size[1];

if($width >= $dstx AND $height >= $dsty){

$proportion_X = $width / $dstx;
$proportion_Y = $height / $dsty;

if($proportion_X > $proportion_Y ){
$proportion = $proportion_Y;
}else{
$proportion = $proportion_X;
}
$target['width'] = $dstx * $proportion;
$target['height'] = $dsty * $proportion;

$original['diagonal_center'] = 
round(sqrt(($width*$width)+($height*$height))/2);
$target['diagonal_center'] = 
round(sqrt(($target['width']*$target['width'])+
($target['height']*$target['height']))/2);

$crop = round($original['diagonal_center'] - $target['diagonal_center']);

if($proportion_X < $proportion_Y ){
$target['x'] = 0;
$target['y'] = round((($height/2)*$crop)/$target['diagonal_center']);
}else{
$target['x'] = round((($width/2)*$crop)/$target['diagonal_center']);
$target['y'] = 0;
}

if($fileExtension == "jpg" OR $fileExtension=='jpeg'){ 
$from = ImageCreateFromJpeg($src); 
}elseif ($fileExtension == "gif"){ 
$from = ImageCreateFromGIF($src); 
}elseif ($fileExtension == 'png'){
 $from = imageCreateFromPNG($src);
}

$new = ImageCreateTrueColor ($dstx,$dsty);

imagecopyresampled ($new, $from, 0, 0, $target['x'], 
$target['y'], $dstx, $dsty, $target['width'], $target['height']);

 if($fileExtension == "jpg" OR $fileExtension == 'jpeg'){ 
imagejpeg($new, $dst, 70); 
}elseif ($fileExtension == "gif"){ 
imagegif($new, $dst); 
}elseif ($fileExtension == 'png'){
imagepng($new, $dst);
}
}
}
}
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-03-06, 10:22 #3
WizKid WizKid är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2004
Inlägg: 618
WizKid WizKid är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2004
Inlägg: 618
Ta och läs http://qdig.sourceforge.net/Support/AllowedMemorySize så förstår du varför du behöver mer minne.
WizKid är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-03-06, 10:31 #4
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Tack, det var nyttig läsning.

Men jag visste att det krävde mycket minne och att det har med storleken på bilden att göra.

men det verkar alltså inte vara något jag kan göra? :S
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-03-06, 12:26 #5
totoos avatar
totoo totoo är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2006
Inlägg: 730
totoo totoo är inte uppkopplad
Mycket flitig postare
totoos avatar
 
Reg.datum: Nov 2006
Inlägg: 730
Antar att One heller inte tillåter att du ändrar minnet med ini_set eller htaccess heller. Annars hade ju det fungerat. Loopa tillåter att man ändrar detta i alla fall - jag helgonförklarar dem av den anledningen.
totoo är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-03-06, 16:21 #6
MMCs avatar
MMC MMC är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2008
Inlägg: 560
MMC MMC är inte uppkopplad
Mycket flitig postare
MMCs avatar
 
Reg.datum: Jan 2008
Inlägg: 560
En lösning för att komma runt det är ju att hitta ett annat sätt att skala om bilderna, kanske göra det i Flash på klienten vid uppladdning?
MMC är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-03-31, 11:43 #7
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
hur skapar man en htaccess fil som ändrar det?
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 11:28.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017