26. juni 2005 - 15:36Der er
57 kommentarer og 1 løsning
sti angivet forkert
Hej. jeg har følgende men der er noget forkert :
$query = mysql_query("SELECT * FROM medlem WHERE filnavn !='' && koen='k' ORDER by dato1 DESC LIMIT 3"); while ($row = mysql_fetch_array($query)) {
// The file $filename = /test/".$row[filnavn]."\";
OSV....
Jeg ved ikke hvordan jeg skal skrive den sidste sætning med $filename. Billederne ligge under mappen "test" og stien til billedet i databasen ($row[filnavn]).
$filename skal efterfølgende bruges i dette :
$percent = 0.3; // if you want to scale down first $imagethumbsize = 50; // thumbnail size (area cropped in middle of image) // Content type header('Content-type: image/jpeg');
// Get new dimensions list($width, $height) = getimagesize($filename); $new_width = $width * $percent; $new_height = $height * $percent;
// Resample $image_p = imagecreatetruecolor($imagethumbsize , $imagethumbsize); // true color for best quality $image = imagecreatefromjpeg($filename);
// basically take this line and put in your versin the -($new_width/2) + ($imagethumbsize/2) & -($new_height/2) + ($imagethumbsize/2) for // the 2/3 position in the 3 and 4 place for imagecopyresampled // -($new_width/2) + ($imagethumbsize/2) // AND // -($new_height/2) + ($imagethumbsize/2) // are the trick imagecopyresampled($image_p, $image, -($new_width/2) + ($imagethumbsize/2), -($new_height/2) + ($imagethumbsize/2), 0, 0, $new_width , $new_width , $width, $height);
Fint. Men hvordan kan det være at udskriften af billedet bare bliver en masse mærkelig tegn ?? Når jeg har følgende i en fil for sig selv (moon.php) så virker det fint, men når det placeres som <? include("moon.php"); ?> i en anden fil så bliver det til alle de mærkelige tegn ??
<? // The file $filename = '1115934880.jpg'; $percent = 0.3; // if you want to scale down first $imagethumbsize = 50; // thumbnail size (area cropped in middle of image) // Content type //header('Content-type: image/jpeg');
// Get new dimensions list($width, $height) = getimagesize($filename); $new_width = $width * $percent; $new_height = $height * $percent;
// Resample $image_p = imagecreatetruecolor($imagethumbsize , $imagethumbsize); // true color for best quality $image = imagecreatefromjpeg($filename);
// basically take this line and put in your versin the -($new_width/2) + ($imagethumbsize/2) & -($new_height/2) + ($imagethumbsize/2) for // the 2/3 position in the 3 and 4 place for imagecopyresampled // -($new_width/2) + ($imagethumbsize/2) // AND // -($new_height/2) + ($imagethumbsize/2) // are the trick imagecopyresampled($image_p, $image, -($new_width/2) + ($imagethumbsize/2), -($new_height/2) + ($imagethumbsize/2), 0, 0, $new_width , $new_width , $width, $height);
okay nu har jeg så denne meddelse : Warning: getimagesize(): Unable to access /test/1115934880.jpg og det er i denne linie : list($width, $height) = getimagesize($filename);
Men så er det jo ikke dit filnavn. Du skal enten angive en relativ sti, set fra dit script, eller en absolut sti, regnet fra roden af filsystemet. Hvis test ligger i roden af filsystemet, er det fint nok. Men det gør den jo så nok ikke ;)
<? // The file $filename = '1115934880.jpg'; $percent = 0.3; // if you want to scale down first $imagethumbsize = 50; // thumbnail size (area cropped in middle of image) // Content type header('Content-type: image/jpeg');
// Get new dimensions list($width, $height) = getimagesize($filename); $new_width = $width * $percent; $new_height = $height * $percent;
// Resample $image_p = imagecreatetruecolor($imagethumbsize , $imagethumbsize); // true color for best quality $image = imagecreatefromjpeg($filename);
// basically take this line and put in your versin the -($new_width/2) + ($imagethumbsize/2) & -($new_height/2) + ($imagethumbsize/2) for // the 2/3 position in the 3 and 4 place for imagecopyresampled // -($new_width/2) + ($imagethumbsize/2) // AND // -($new_height/2) + ($imagethumbsize/2) // are the trick imagecopyresampled($image_p, $image, -($new_width/2) + ($imagethumbsize/2), -($new_height/2) + ($imagethumbsize/2), 0, 0, $new_width , $new_width , $width, $height);
// Output
imagejpeg($image_p, null, 100); ?>
Men hvis jeg tilføjer ovenstående script i en anden fil så virker det ikke. Den skriver noget med headers alredy sent ??
Jo, men som jeg sagde, kan du ikke vise billede og kode i samme fil. Du skal have en side til din html, og så hente billedet med et andet script, som fx. <img src="moon.php">
okay, men hvis jeg har følgende kode i en fil kaldet moon.php så kan jeg godt. Så vises billedet :
<?php // The file $filename = '1115934880.jpg'; $percent = 0.3; // if you want to scale down first $imagethumbsize = 50; // thumbnail size (area cropped in middle of image) // Content type //header('Content-type: image/jpeg');
// Get new dimensions list($width, $height) = getimagesize($filename); $new_width = $width * $percent; $new_height = $height * $percent;
// Resample $image_p = imagecreatetruecolor($imagethumbsize , $imagethumbsize); // true color for best quality $image = imagecreatefromjpeg($filename);
// basically take this line and put in your versin the -($new_width/2) + ($imagethumbsize/2) & -($new_height/2) + ($imagethumbsize/2) for // the 2/3 position in the 3 and 4 place for imagecopyresampled // -($new_width/2) + ($imagethumbsize/2) // AND // -($new_height/2) + ($imagethumbsize/2) // are the trick imagecopyresampled($image_p, $image, -($new_width/2) + ($imagethumbsize/2), -($new_height/2) + ($imagethumbsize/2), 0, 0, $new_width , $new_width , $width, $height);
okay nu bruger jeg så <img src="moon.php"> men da det indgår i følgende kode, så skal der overføres en variabel $row[filnavn] til moon.php og hvordan kan jeg gøre det ?? :
<? $query = mysql_query("SELECT * FROM medlem WHERE filnavn !='' && koen='k' ORDER by dato1 DESC LIMIT 3"); while ($row = mysql_fetch_array($query)) {
Ja det eneste der er problemet lige nu er at scriptet kun acceptere jpg filer, men jeg vil også gerne have at det skal klare gif filer. Er det noget du ved hvordan jeg kan få den til at ta også ??
Jeg skal lige sikre mig at jeg ved hvad du skal have hjælp til. Det du skriver 26/06-2005 23:19:27 er jo ikke rigtig PHP, men mere hen i retning af pseudokode. Hvad er det du har som ikke virker?
Fint, det jeg har som ikke virker er i moon.php filen hvor jeg har ændret jpg til gif :
<?php // The file $filename = "/customers/sti.dk/sti.dk/httpd.www/test/".$_GET['filnavn']; $percent = 0.5; // if you want to scale down first $imagethumbsize = 50; // thumbnail size (area cropped in middle of image) // Content type header('Content-type: image/gif');
// Get new dimensions list($width, $height) = getimagesize($filename); if ($width<100 or $height<100) { $new_width = $width ; $new_height = $height ; } else {
$new_width = $width * $percent; $new_height = $height * $percent; } // Resample $image_p = imagecreatetruecolor($imagethumbsize , $imagethumbsize); // true color for best quality $image = imagecreatefromgif($filename);
// basically take this line and put in your versin the -($new_width/2) + ($imagethumbsize/2) & -($new_height/2) + ($imagethumbsize/2) for // the 2/3 position in the 3 and 4 place for imagecopyresampled // -($new_width/2) + ($imagethumbsize/2) // AND // -($new_height/2) + ($imagethumbsize/2) // are the trick imagecopyresampled($image_p, $image, -($new_width/2) + ($imagethumbsize/2), -($new_height/2) + ($imagethumbsize/2), 0, 0, $new_width , $new_width , $width, $height);
Ja, måske - billedmanipulation tager tid, og du vil på en webserver typisk kun have en timeoút på måske 30 sekunder.
Jeg kan se, at du måske laver dine thumbnails hver eneste gang de skal vises. Det er en pæn belastning for serveren. Du bør vel lave dem een gang, gemme den i en fil, og så kun referere til den.
Synes godt om
Slettet bruger
27. juni 2005 - 15:35#39
Ja, serveren er sandsynligvis sat op til ikke at tillade større end et vist ramforbrug til et script, og jpg-billeder er normalt pakket, men når de skal indlæses for at skrumpe dem bliver de pakket ud, så de bruger meget mere hukommelse end selve filstørrelsen.
Jeg vil tro grænsen ligger ved 8MB ram. Det er vistnok standardindstillingen.
og sandbox eller jer begge : kender i en udbyder hvor grænsen er højere end de anførte 8MB ram ??
Synes godt om
Slettet bruger
27. juni 2005 - 16:54#42
Hvis du vil følge Eriks forslag (en meget god ide), kan du gøre noget i denne stil:
Start scriptet med at se, om der allerede findes en thumbnail.
if (file_exists('/thumbnailmappe/' . $filename))
og så kun lave en thumbnail, hvis filen ikke allerede fandtes. Så skal du nok sætte dit upload-script til også at slette gamle thumbnails, hvis man uploader en ny udgave af et eksisterende billede.
Vi er tilbage hvor vi startede: dine filer ligger ikke i "/", rodkataloget, men nede i "/customers/sti.dk/sti.dk/httpd.www/", sådan ca., så det er den sti du skal bruge.
jeg har både originalbillede og thumbnailbillede liggende i database(filnavne) og deres respektive mapper ( /test og /thumbnailmappe ) på serveren (billederne)
Når jeg indlæser thumbnailbilledet til udskrivning skal der være en forbindelse til originalbilledet så det er det der popper op når man klikker på det. Hvordan får jeg det lavet ??
Lige en allerallersidste ting : hvordan kan jeg begrænse størrelsen af popup billedet så det ikke fylder mere end skærmen ??
Jeg har dette script : <Script Language="JavaScript"> // Script Source: CodeLifter.com // Copyright 2003 // Do not remove this notice.
// SETUPS: // ===============================
// Set the horizontal and vertical position for the popup
PositionX = 100; PositionY = 50;
// Set these value approximately 20 pixels greater than the // size of the largest image to be used (needed for Netscape)
defaultWidth = 500; defaultHeight = 500;
// Set autoclose true to have the window close automatically // Set autoclose false to allow multiple popup windows
var AutoClose = true;
// Do not edit below this line... // ================================ if (parseInt(navigator.appVersion.charAt(0))>=4){ var isNN=(navigator.appName=="Netscape")?1:0; var isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;} var optNN='scrollbars=no,width='+defaultWidth+',height='+defaultHeight+',left='+PositionX+',top='+PositionY; var optIE='scrollbars=yes,width=150,height=100,left='+PositionX+',top='+PositionY; function popImage(imageURL,imageTitle){ if (isNN){imgWin=window.open('about:blank','',optNN);} if (isIE){imgWin=window.open('about:blank','',optIE);} with (imgWin.document){ writeln('<html><head><title>Loading...</title><style>body{margin:0px;}</style>');writeln('<sc'+'ript>'); writeln('var isNN,isIE;');writeln('if (parseInt(navigator.appVersion.charAt(0))>=4){'); writeln('isNN=(navigator.appName=="Netscape")?1:0;');writeln('isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;}'); writeln('function reSizeToImage(){');writeln('if (isIE){');writeln('window.resizeTo(100,100);'); writeln('width=100-(document.body.clientWidth-document.images[0].width);'); writeln('height=100-(document.body.clientHeight-document.images[0].height);'); writeln('window.resizeTo(width,height);}');writeln('if (isNN){'); writeln('window.innerWidth=document.images["George"].width;');writeln('window.innerHeight=document.images["George"].height;}}'); writeln('function doTitle(){document.title="'+imageTitle+'";}');writeln('</sc'+'ript>'); if (!AutoClose) writeln('</head><body bgcolor=ffffff scroll="no" onload="reSizeToImage();doTitle();self.focus()">') else writeln('</head><body bgcolor=ffffff scroll="no" onload="reSizeToImage();doTitle();self.focus()" onblur="self.close()">'); writeln('<img name="George" src='+imageURL+' style="display:block"></body></html>'); close(); }} </script>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.