Avatar billede lalledk Nybegynder
28. marts 2006 - 00:02 Der er 22 kommentarer

Galleri med billede eksempler

Hey :)
Jeg skal igang med at lave et galleri på min side. Det skal være i php, og så vil jeg bare spørge, hvordan man kan lave et system, hvor man uploader billeder til serveren og derefter henter billederne til siden. Når de hentes til siden, skal de være i lille størrelse, så når man trykker på dem, får man den fulde størrelse.
Håber I kan hjælpe :)
Der er 200 point til svaret.
På forhånd tak!
/Lalledk
Avatar billede drbean Nybegynder
28. marts 2006 - 07:48 #1
Du siger du skal igang med at lave. Hvad har du brug for hjælp til? Upload af filer, resize af billeder. Visning af billeder?

Du skal bruge GDLib til at behandle dine billeder (http://dk.php.net/manual/en/function.gd-info.php)

Du skal bruge http://dk.php.net/manual/en/function.move-uploaded-file.php til at uploade dine filer, og evt copy når du skal lave et lille billede.
Avatar billede ladyhawke Novice
28. marts 2006 - 08:06 #2
Er det vigtigt at du selv bygger det? For i modsat fald findes der en hel bunke der allerede kan det du vil have og en masse andet
Avatar billede lalledk Nybegynder
28. marts 2006 - 08:18 #3
Jeg vil ihvertfald gerne have mulighed for at have fuld indsigt i koden. Der er bare mange af de scripts man henter, hvor de skjuler noget af koden, og hvor man bliver nødt til at linke til deres site. Det ville bare være smart, hvis billederne automatisk blev sizet ned til en mindre størrelse på den side, de bliver hentet til, så man selv slipper for at gøre det. Jeg mangler faktisk hjælp til hele koden, så ville være glad, hvis I kunne komme med nogle forslag :)
Avatar billede drbean Nybegynder
28. marts 2006 - 08:28 #4
Det første du skal gøre er at upload dine billeder. Du kan se mere her:
http://www.webcafe.dk/artikler/php/upload/

Du skal så finde ud af hvordan du vil gemme dine data. Du kan vælge at ligge dine billeder i en mappe og lig billede navne i en database. På den måde kan du hente stien ud til de billeder du vil bruge hurtigt. Du kan også vælge at lave en mappe per billede galleri, og løbe mappen igennem. Men start med at lave en funktion der kan uploade dine billeder. Bagefter skal du have set på GDLib. Men skriv når du kommer så langt.
Avatar billede lalledk Nybegynder
28. marts 2006 - 09:09 #5
Er sjovt nok igang med den :) Men fatter bare ikke, hvor det er henne i php-koden, at man opretter selve forbindelsen til ens server. Går da ud fra, at man skal oprette forbindelse med bruger og password til serveren?
Avatar billede drbean Nybegynder
28. marts 2006 - 09:13 #6
Du skal ikke oprette nogen forbindelse, med mindre du bruger ftp kommandoer. Dit phpscript ligger i forvejen på serveren, så du kan bruge move_uploaded_file funktionen, uden username og password
Avatar billede lalledk Nybegynder
28. marts 2006 - 09:32 #7
ok, så er det lavet :) Men det er så kun en funktion der uploader filer til serveren uden samtidig at sætte navn ind i min databasen. Hvad er næste trin så? :)
Avatar billede drbean Nybegynder
28. marts 2006 - 09:53 #8
Til at starte med syntes jeg du skulle se på GDLib funktionerne.

Vi skal have lavet noget kontrol på fil type. (Det plejer jeg at gøre inde jeg kører move_uploaded_file.

function CheckFileType($sImageType)
    {
        $tilladte = array("image/jpg","image/jpeg","image/pjpeg");
        if(in_array($sImageType, $tilladte))
        {
              return true;
        }
        else return false;
    }
Resize

Så skal du finde størrelsen på det nye billede. Det skal gerne se pænt ud når du resizer, så en måde at gøre det på er sådan her:
        $iWidth = 300;

        $iSize = getimagesize($sImage);
        if($iSize[0] < $iWidth)
        {
            $iImageHeight = $iSize[1];
            $iImageWidth = $iSize[0];
        }
        else
        {
            $iImageWidth = $iWidth;
            $iDivision = $iSize[0] / $iImageWidth;
            $iImageHeight = $iSize[1] / $iDivision;
        }
   
er $iWidth, den nye brede
$sImage, er stien til billede,
$iImageHeight, og width er billedes nye størrelse

Nu mangler vi at resize billede.

Resize af billede:
function ResizeJpg($sImage,$Width, $Height)
    {
        $dTemp = ImageCreateTrueColor($Width,$Height)or die ("Cannot Initialize new GD image stream");
        $image = ImageCreateFromJpeg($sImage);
       
        $imagedata = getimagesize($sImage);
       
        imagecopyresampled ($dTemp, $image,0,0,0,0,$Width,$Height, $imagedata[0], $imagedata[1]);
        imagejpeg($dTemp, $sImage,100);
    }

Alt dette skal du gøre igen efter du har taget en kopi af billede. På den måde har du 2 billeder. Det store og det lille. Disse funktioner er taget ud af en større klasse, men jeg håber det giver dig en ide om hvordan du kan forsætte. Skriv endelig hvis det driller.
Avatar billede lalledk Nybegynder
28. marts 2006 - 22:14 #9
Jaa, det ser jo ret svært ud, men der er jo ikke andet end at gå igang med at læse på de GDlib funktioner.. :)
Avatar billede lalledk Nybegynder
29. marts 2006 - 22:52 #10
Det kan ikke gøres mere simpelt vel? :) Er rimelig ny til php, så synes det virker lidt uoverskueligt.. :/
Avatar billede ladyhawke Novice
30. marts 2006 - 08:13 #11
Det er faktisk rimeligt simpelt det drbean har skrevet... Men måske du skulle starte med noget mere simpelt i php inden du begynder at bygge et galleri?

Hvor meget har du lavet i php før?
Avatar billede drbean Nybegynder
30. marts 2006 - 10:52 #12
som ladyhawke skriver... tror ikke det kan laves mere simpel end det... desværre...
Avatar billede lalledk Nybegynder
30. marts 2006 - 14:30 #13
Jeg har lavet nogle forskellige tutorials og så har jeg lavet en gæstebog, hvor info gemmes i og hentes fra en database. Men kan ikke rigtig få det galleri til at virke, selvom jeg har sat mig ned og set på det :/ Men der kommer også hele tiden nye ideer op i hovedet på mig hehe.. Nu synes jeg f.eks., at det kunne være fedt, hvis der blev oprettede forskellige mapper til de forskellige billeder, så man kunne have flere albums, men jeg må nok starte i det lidt mindre :)
Avatar billede ladyhawke Novice
30. marts 2006 - 14:36 #14
Start stille og fredeligt med at hente et billede og lave de 2 størrelser du vil have, så kan du bagefter arbejde på at uploade flere billeder og tilpasse + håndtere dem...

Rom blev ikke bygget på én dag og det er der heller ingen programmører der er blevet...
Avatar billede lalledk Nybegynder
30. marts 2006 - 14:38 #15
nej, jeg ved det godt hehe ;) Er bare lidt svært, når man er ivrig, for jeg gider ihvertfald heller ikke gå ind og hente et færdigt script, som jeg ikke forstår noget af - vil jo helst blive bedre :)
Avatar billede lalledk Nybegynder
30. marts 2006 - 14:45 #16
Men jeg vil meget gerne have forklaret drbeans kode endnu nærmere, for billedet bliver kun resizet og ikke hentet til siden, vel?
Avatar billede drbean Nybegynder
30. marts 2006 - 18:30 #17
Nej, hvis du skal hente billede til siden, skal du bare lave et normalt link til billede. Det er nu vi skal have noget database ind over. I den korte version, skal du blot gennem billedes navn i en tabel. Og hente det frem igen når du vil vise billede. Du kan vælge at have flere informationer som man kan bruge senere hen. Størrelse på billede, hvilket album det tilhøre osv. Men brug de variabel navne du har i $_FILES array (tror jeg det hedder) og gem dem du skal bruge i tabellen. Tænk også over at alle billeder skal have et unikt navn
Avatar billede lalledk Nybegynder
04. april 2006 - 09:07 #18
hmm.. Jeg kan ikke rigtig få det til at virke, så jeg må hellere få læst lidt mere php, før jeg går igang.. Men I kan bare poste svar, så får I point for jeres hjælp :)
Avatar billede drbean Nybegynder
04. april 2006 - 12:16 #19
jeg samler ikke på point... ellers tak... Men har du brug for mere hjælpe, så lig din kode ind her, og skriv hvad for nogen fejl du får, så lad os se på det der fra.
Avatar billede ladyhawke Novice
04. april 2006 - 14:08 #20
var ikke til megen hjælp her, benyt du bare drbeans tilbud...
Avatar billede lalledk Nybegynder
04. april 2006 - 17:11 #21
:)
hmm må vel lige spørge om jeg har forstået tanken bag et galleri. Når et billede uploades bliver både dét plus et mindre billede gemt på serveren. Samtidig bliver de begge tildelt et ID i databasen. De to billeder gemmes i hver sin mappe, så det er iorden, at de har samme ID.. Og derefter skal der så reffereres til billedet:

<?php

$sql = ("Select * from gallery(som er tabelnavnet)");
$resultat = mysql_query($sql);

$raekker = mysql_fecth_array($raekke);
?>
<a href="url-til-hjemmeside.com/originalbillede-mappen/<? echo ($raekke['ID']); ?>">
<img src="url-til-hjemmeside.com/thumbs-mappen/<? echo ($raekke['ID']); ?>">

der er sikkert fejl i koden, men det er bare for a se, om jeg har forstået det :)
Avatar billede drbean Nybegynder
04. april 2006 - 20:04 #22
det er rigtigt.... sådan ville jeg også gøre det....
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester