WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Förminska bilder (https://www.wn.se/forum/showthread.php?t=1042212)

Kaanteg 2010-05-25 11:23

Förminska bilder
 
Håller på med ett projekt och har stött på problem!

Det är så att jag skulle vilja förminska bilderna vars url finns lagrad i databasen innan de visas på webbsidan. Jag har hittat en kod som fungerar när det gäller bildförminskningen men den fungerar inte när jag testar getimagesize() på urlen som hämtats i databasen. Urlen är en lagrad som en sträng i databasen, det är jag säker på. Teckenkodningen i databasen o php-scriptet är densamma. Strängen ser ut som den ska med dubbelfnuttar o så. Någon som vet eller har något tips?

Koden:

function visa_bilder($tabell) {
unset($_GET['tbl']);

require_once ("databas.inc");
$sql = "SELECT * FROM $tabell;";
$sql_result = mysql_query ($sql) or die ("Query error");
while ($row = mysql_fetch_assoc ($sql_result)) {

$bild = "\"" . $row['bild'] . "\"";
$width = 120;
$height = 120;

/*Det är här det inte fungerar... $myPhoto får inget värde att lagra... o felmeddelandet lyder:
Warning: getimagesize("xxxxx/ek0020bwmini.jpg ")
[function.getimagesize]: failed to open stream: No such file or directory in
xxxxxx/photoGallery.php on line 34*/

$myPhoto = getimagesize($bild);
$width = $myPhoto[0];
$height = $myPhoto[1];
$target = 120;
if ($width > $height) {
$percentage = ($target / $width);
} else {
$percentage = ($target / $height);
}
$width = round($width * $percentage);
$height = round($height * $percentage);

echo "<li class=\"thumbbox\"><a href=\"" . $row['bild'] . "\" rel=\"lightbox[$tabell]\">
<img src=\"" . $row['bild'] . "\" alt=\"" . $tabell . "\" title=\"" . $tabell . "\" width=\"" . $width . "\" height=\"" . $height . "\"/></a><p class=\"bildtext\">" . $row['beskrivning'] . "</p></li>";
}

echo "</ul>";

}

taz76 2010-05-25 11:45

använda fullständig sökväg kanske?

Johan_S 2010-05-25 11:57

Ligger bilden på din egen server?

Se till att använda fullständig sökväg ifrån rooten, det löser många problem!

Prova:

$bild = '/' . $row['bild'];

En bildsökväg har inte slash på slutet..

EDIT: Såg inte det extra " som inte ska vara med.. hnn nedan gjorde det!

hnn 2010-05-25 12:21

Prova bild med:

$bild = $row['bild'];

eller

$bild = '/' . $row['bild'];

Kaanteg 2010-05-25 16:18

$bild = "\"" . $row['bild'] . "\""; ger en hel url med http:// till /ek0020bwmini.jpg, jag har bara utelämnat hela sökvägen här av säkerhetsskäl, $bild ger en fullständig sökväg.

"En bildsökväg har inte slash på slutet..." = slashen med fnuttar i slutet är för att lägga på dubbelfnuttar på urlen

martine 2010-05-25 18:30

Citat:

Ursprungligen postat av Kaanteg (Inlägg 20356712)
"En bildsökväg har inte slash på slutet..." = slashen med fnuttar i slutet är för att lägga på dubbelfnuttar på urlen

En sökväg brukar inte ha "fnuttar" i början och slutet heller...

Har du överhuvudtaget provat att du har rätt sökväg med t.ex. file_exists()??

Kaanteg 2010-05-25 20:02

funktionen getimagesize() vill ha bildens sökväg inom dubbelfnuttar, det är ingen tvekan om att filen existerar då den används utan problem på andra ställen i scriptet...

Jimpsson 2010-05-25 20:45

Citat:

Ursprungligen postat av Kaanteg (Inlägg 20356748)
funktionen getimagesize() vill ha bildens sökväg inom dubbelfnuttar

Nej? getimagesize vill ha sökvägen till din bild. Du ska bara använda fnuttar när du skriver in sökvägen statiskt på följande sätt:

getimagesize('bilden.png');

Så du bör ta bort dubbelfnuttarna från $bild.

taz76 2010-05-25 23:31

om inte en http-adressen funkar är det väl blockerat i php.. då behöver du den fullständiga sökvägen till filen i filsystemet.. som på ett linux webhotell kanske är: /home/users/xxx/public_html/images/...

om scriptet ligger i rooten på webhotellet kör du:

$path = dirname(__FILE__).'/';
$myPhoto = getimagesize($path.$row['bild']);

tartareandesire 2010-05-26 11:58

Uppenbarligen så har du fel sökväg. Skriv ut resultatet och se efter att det verkligen stämmer. Det är det enklaste och bästa sättet att felsöka i de fall det inte handlar om parse-fel.

Varför vill du ändra storleken i realtid förresten?


Alla tider är GMT +2. Klockan är nu 09:23.

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