/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
imagecopyresampled
Fra : tobber


Dato : 03-03-04 12:09

Hej

Jeg er næsten blevet gammel over et problem med GD jeg ikke kan få hul
på. Håber nogen kan løse det.

Sagen at at jeg har lavet et monster af en script og nu virker det
bare ikke #!

Hm... altså:

1. Jeg uploader et billede, resizer det og viser det i et vindue for
sig (modalt selvfølgelig) - det går fint og jeg bruger dette script:

--------------------
function resampimagejpg($forcedwidth, $forcedheight, $sourcefile,
$destfile, $imgcomp){
if(file_exists($sourcefile)){
$size=getimagesize($sourcefile);
if($size[0]>=$size[1]){
$destwidth=$forcedwidth;
$destheight=($forcedwidth/$size[0])*$size[1];
} else {
$destheight=$forcedheight;
$destwidth=($forcedheight/$size[1])*$size[0];
}
$img_src=@imagecreatefromjpeg($sourcefile) or die ("Image not
found!");
$img_dst=@imagecreatetruecolor($destwidth,$destheight) or die
("Can't create Image!");
imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $destwidth,
$destheight, $size[0], $size[1]);
imagejpeg($img_dst, $destfile, $imgcomp);
imagedestroy($img_dst);
return true;
}
else
return false;
}
--------------------

Jeg kalder funktionen med:

--------------------
$source = $tmp_name;
$dest = '../_t/org_'.$filename;
$temp = '../_t/temp.jpg';
move_uploaded_file( $source, $dest);
$size = getimagesize($dest);
resampimagejpg($makesize, $makesize, $dest, $temp, 100);
--------------------

Herefter går fint med at vise billedet resized og originalbilledet er
gemt på serveren (den bruger jeg senere). Med temp-billedet er det
mere tvivlsomt.

Herefter følger noget skummelt, hvor jeg i interfacen giver mulighed
for at markere et område på billedet, som skal croppes. Det virker og
jeg springer derfor over det.

Ved hjælp af javascript og et object gemmer jeg de parametre, jeg skal
bruge til cropningen.

Med
--------------------

cropimagejpg($oprindeligtBillede, $resultatBillede, $cleft, $ctop,
$cwidth, $cheight);

--------------------

kalder jeg:

--------------------

function cropimagejpg($oprindeligtBillede, $resultatBillede, $l, $t,
$w, $h){
$makesize = 500;
if($w>=$h){
$destwidth=$makesize;
$destheight=round(($makesize/$w)*$h);
} else {
$destheight=$makesize;
$destwidth=round(($makesize/$h)*$w);
}
$size=getimagesize($resultatBillede);
$sizeopr=getimagesize($oprindeligtBillede);
$newWidth = round($w*$sizeopr[0]/$size[0]);
$newHeight= round($h*$sizeopr[0]/$size[0]);
$srcleft = round($sizeopr[0]*$l/$size[0]);
$srctop = round($sizeopr[1]*$t/$size[1]);
$srcwidth = round($sizeopr[0]*$w/$size[0]);
$srcheight= round($sizeopr[1]*$h/$size[1]);
$img_src =@imagecreatefromjpeg($oprindeligtBillede) or die ("Image
not found!");
$img_dst1 =@imagecreatetruecolor($newWidth,$newHeight) or die
("Fejl 1");
$img_dst2 =@imagecreatetruecolor($destwidth,$destheight) or die
("Fejl 2");
imagecopyresampled($img_dst1, $img_src, 0, 0, $srcleft, $srctop,
$newWidth, $newHeight, $srcwidth, $srcheight);
imagejpeg($img_dst1, $oprindeligtBillede, 100);
imagedestroy($img_dst1);
imagecopyresampled($img_dst2, $img_src, 0, 0, $srcleft, $srctop,
$destwidth, $destheight, $srcwidth, $srcheight);
imagejpeg($img_dst2, '../_t/temp.jpg', 100);
imagejpeg($img_dst2, $resultatBillede, 100);
imagedestroy($img_dst2);
return true;
}
--------------------

Ja - og det virker så bare ikke!

Målet er at beskære originalbilledet ud fra parametrene fra
temp-billedet; gemme en ny udgave af originalbilledet i
$oprindeligtBillede og vise en temp-udgave af samme igen - resized.

imagejpeg() udskriver tilsyneladende hele tiden billedet ud i stedet
for at skrive til temp.jpg, som jeg så vil henvise til længere nede på
siden. I første runde gør den som jeg forventer ikke i andet. På
forhånd tak

Tobber

 
 
tobber (03-03-2004)
Kommentar
Fra : tobber


Dato : 03-03-04 16:08

Jeg synes lige jeg vil gøre opmærksom på at det nu virker som om
problemet mest hænger sammen med begrænsninger i modalvinduer. Jeg kan
ikke få den til at opdatere på sædvanlig måde. Teksten opdateres, men
ikke billeder. Altså ikke direkte et PHP-problem. Er det noget andre
kan nikke genkendende til? Kan jeg lave noget i PHP der sikrer en
opdatering? Jeg har forsøgt med nocache osv.

> Hm... altså:
>
> 1. Jeg uploader et billede, resizer det og viser det i et vindue for
> sig (modalt selvfølgelig) - det går fint og jeg bruger dette script:
>

tobber

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408848
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste