19. marts 2007 - 13:35
Der er
17 kommentarer
Resize billede
Hej. Jeg har et billedgalleri der fungere helt fint, men jeg ville gerne have lidt kontrol over billederne så de ikke dukker op i org. opløsning (1600 x 1200 er lige stort nok!) Men vil ikke bare stille høje og brede til fx 400 x 300 så bliver billederne jo gnidret at se på... Desuden er nogle af billederne også i liggende format så hvis man kan skrive en eller anden kode så hvis høje er større end bredde skal høje max være 400 og bredde max 300, mens hvis bredde er større end højeden skal bredde max være 400 og høje max 400 Kan det overhovedet lade sig gi sig? - kender intet til php, scriptet er et jeg har fundet herinde ved at søge gennem en masse spm. |Krel
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
19. marts 2007 - 17:59
#1
Det skulle nok være muligt at lave ja! :o)
19. marts 2007 - 18:00
#2
<?php function resize( $filename, $newfilename, $maxw, $maxh ) { $result = false; $srcim = imagecreatefromjpeg( $filename ); $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $wscale = $maxw / $ow; $hscale = $maxh / $oh; $scale = ( $hscale < $wscale ? $hscale : $wscale ); $nw = round( $ow * $scale, 0 ); $nh = round( $oh * $scale, 0 ); $dstim = imagecreatetruecolor( $nw, $nh ); imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh ); $result = imagejpeg( $dstim, $newfilename, 85 ); imagedestroy( $dstim ); imagedestroy( $srcim ); return $result; } ?>
19. marts 2007 - 18:01
#3
Ja, det tror jeg godt det kan, men det er nok nødvendigt med lidt mere information om hvordan det mere nøjagtigt ønskes at det skal fungerer. Hvis du nu starter med at forklare hvordan dit billed galleri fungerer idag. Mvh. Johan
19. marts 2007 - 22:20
#4
hmm jeg har en index.php med en masse kode (håber ikke den er nødvendig at poste her) et sted i denne kode genereres så noget i retning af: et link: til show.php?..en masse kriterier.. denne show.php inderholder kun denne ene linie <a title="klik for at komme tilbage til galleriet" href="java script:history.back();"><img src="<?php echo $_GET['show']; ?>" border="0"></a></td> hvor jeg så ville håbe at det kun er nødvendigt at tilføje et stykke kode (evt den fra jakobdo - prøver lige)
19. marts 2007 - 22:23
#5
* øhm >> jakobdo Da jeg har søgt på dette emne herinde syns jeg, jeg er nået frem til noget der minder om dit. Kan det passe at din kode går ind og gemmer billerne i mappen med den størrelse som man nu angiver eller er det kun på den side at billederne vises i den angivne størrelse så et org billed på fx 1600x1200 forbliver denne opæøsning og ikke 400x300 hvis dette nu skulle være max ?
19. marts 2007 - 22:31
#6
Funktionen kan bruges til at resize et billede! Hvis vi siger du har billedet: 1600x1200.jpg og smider det i funktionen: resize('1600x1200.jpg','400x300.jpg',400,400); Så vil den kopiere et lille billede, som vil være max 400 i højde eller bredde.
19. marts 2007 - 22:44
#7
oket men er det så ikke kun billeder i jpg format? bare nysgerig.. Denne 'kopiering' bliver så kun vist på den pågældende side og ikke gemt fysisk noget sted?
19. marts 2007 - 22:55
#8
* yes, nu er det sådan at der lægger mange billeder i hver mappe og disse bliver hentet via URL'en så når man klikker på et billeder åbnes: show.php?id=$tal&show=$mappe/$billeder[$i]\ på show.php er kilden til det enkelt billede så givet ved: ();"><img src="<?php echo $_GET['show']; ?>" border="0"> har prøve at rode lidt så dette $_GET['show'] bliver indsat som det billede der skal resizes og hvis man så kunne lave noget ala $_GET['show']_small så det nye billede kom til at hedde det samme blot med dette "_small" bagefter? ??
20. marts 2007 - 07:58
#9
Altså man kunne godt godt få ind og rette i koden show.php og få den til at resize billedet on-the-fly. Man kunne jo også lave det på denne måde: Tjek om der findes et lille billede af det billede som brugeren forespørger på: Findes lille version? Hvis ja, vis det. Hvis nej, opret det lille billede og gem det til næste gang en vil se det og vis det.
20. marts 2007 - 21:22
#10
Okey Nu syns jeg det i forvejen tar en del tid at hente billederne så det ville jo nok ikk være nogen dårlig ide at gemme dem mindre.. Denne tjekke funktion, var det noget du ville strikke ind i min nuværende php-kode (ekstra point gives self. hvis 100 ikk er 'arb' værd!)
20. marts 2007 - 21:34
#11
Du kan da prøve at smide show.php koden herind! Måske jeg kan tilføje noget kode dertil, som kan det jeg beskrev i tidligere indlæg. Hvilke billede typer har du i dit gallery?
20. marts 2007 - 21:42
#12
De er alle jpg... ** Show.php ********************* <?php #Indstillinger $tal = $_GET[id]; echo "<head>"; echo "<link rel='stylesheet' type='text/css' href='../../style/Cal.css'>"; echo "<title>KongeLogen :: Billeder $tal. Logeaften</title>"; echo "</head>"; echo "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' width='98%' id='table2'>"; echo "<tr>"; echo "<td class='book'><p style='margin-left: 1pt'><b>BILLEDERNE fra $tal. Kongeloge Aften</b></p></td>"; echo "</tr>"; echo "<tr>"; echo "<td height='3'></td>"; echo "</tr>"; echo "<tr>"; echo "<td>"; ?> <a title="klik for at komme tilbage til galleriet" href="java script:history.back();"><img src="<?php echo $_GET['show']; ?>" border="0"></a></td> <?php echo "</td>"; echo "</tr>"; echo "</table>"; ?> Men jeg tror altså også du er nød til at se på index.php det er i denne alt koden ligger vil jeg sige.. ** index.php ********************* <?php #Indstillinger $tal = $_GET[id]; $sum = 9; // Antal billeder ved siden af hinanden $sumcount = 1; $imgwidth = 46; // Billedets bredde $imgheight = 61.33; // Bileddets højde $mappe = "$tal"; // Mappen med billeder $pr_side = 45; // Antal billeder pr. side echo "<head>"; echo "<link rel='stylesheet' type='text/css' href='../../style/Cal.css'>"; echo "<title>KongeLogen :: Billeder $tal. Logeaften</title>"; echo "</head>"; if (isset($_GET['offset'])) { $offset = $_GET['offset']; } else { $offset = 0; } $pics = $offset+$pr_side; $i = $offset; echo "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' width='98%' id='table2'>"; echo "<tr>"; echo "<td class='book'><p style='margin-left: 1pt'><b>BILLEDERNE fra $tal. Kongeloge Aften</b></p></td>"; echo "</tr>"; echo "<tr>"; echo "<td>"; # Laver et array med billederne, så vi senere kan sortere dem alfabetisk $handle = opendir($mappe); while (($fil = readdir($handle)) !== false) { if ($fil != "." && $fil != ".." && !is_dir($mappe."/".$fil)) { $billeder[] = "$fil"; } } closedir($handle); # Udskriver billederne sort($billeder); echo "<table><tr>"; while($i < $pics && $billeder[$i] != "") { echo "<td><a titel=\"klik for stort billede\" href=\"show.php?id=$tal&show=$mappe/$billeder[$i]\"><img src=\"$mappe/$billeder[$i]\" border=\"0\" width=\"$imgwidth\" height=\"$imgheight\"></a></td>"; if ($sumcount == $sum) { $sumcount = 0; echo "</tr><tr>"; } $sumcount++; $i++; } ?> </tr> </table> <br> <?php #Udskriver frem og tilbage links if ($offset >= $pr_side) { $forrige = $offset-$pr_side; echo "<a aligen='center' class=\"bil\" href=\"?id=$tal&offset=$forrige\"> $pr_side FORRIGE BILLEDER</a> | "; } if (count($billeder) > $offset+$pr_side) { $naeste = $offset+$pr_side; echo "<a aligen='center' class=\"bil\" href=\"?id=$tal&offset=$naeste\"> NÆSTE $pr_side BILLEDER</a>"; } echo "</td>"; echo "</tr>"; echo "</table>"; ?>
04. april 2007 - 08:38
#13
Du kan evt teste dette script: <?php //http://www.eksperten.dk/spm/768854 set_time_limit(0); function resize( $filename, $newfilename, $maxw, $maxh ) { $srcim = imagecreatefromjpeg( $filename ); $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $wscale = $maxw / $ow; $hscale = $maxh / $oh; $scale = ( $hscale < $wscale ? $hscale : $wscale ); $nw = round( $ow * $scale, 0 ); $nh = round( $oh * $scale, 0 ); $dstim = imagecreatetruecolor( $nw, $nh ); imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh ); imagejpeg( $dstim, $newfilename, 85 ); imagedestroy( $dstim ); imagedestroy( $srcim ); return file_exists($newfilename); } $dir = getcwd() . '/'; //Husk mappen som denne fil ligger i, skal chmod'es til 777 $allowExt = array('jpg','JPG','jpeg','JPEG'); $images = glob($dir . '{*.'.implode(',*.',$allowExt).'}', GLOB_BRACE); foreach($images AS $image) { $basename = basename($image); if(!file_exists("thumb_large_" . $basename) && !file_exists("thumb_small_" . $basename) && !preg_match('/^thumb_/', $basename)) { //Stort Thumb resize($basename, getcwd() . "/thumb_large_" . $basename, 800, 800); //Lille Thumb resize($basename, getcwd() . "/thumb_small_" . $basename, 100, 100); echo 'Image : ' . $basename . ' resized<br />'; } } ?> Det laver 2 thumbs! et stort og et lille.
04. april 2007 - 09:12
#14
okey og så kommer det næste problem. hvordan chmod'er jeg en mappe til '777' i frontpage? evt. fra mit websted på nettet?
04. april 2007 - 09:22
#15
Det skal du gøre via FTP.
04. april 2007 - 10:24
#16
hmm okey.. aå skal jeg først finde et ftp program eller kan total comander bruges til det? mener nok jeg bruge det til at uploade sider via ftp engang...
04. april 2007 - 11:09
#17
Total Commander kan du bruge til at chmod'e med.
Vi tilbyder markedets bedste kurser inden for webudvikling