Gå til innhold

Trenger hjelp til et script.


Anbefalte innlegg

Hei Dere.

 

Har nå laget meg en hjemmeside, men så ønsker jeg å ha en "dagens bilde" ramme hvor det kommer et tilfeldig valgt bide.

Er ikke så god i php selv så jeg kunne ha trengt litt start hjelp til noe sånt:

 

upload.php:

Her bare velger du et bilde på din egen maskin. Bildet lastes så opp til serveren, legger bildet i mappen <bilder>. Scriptet genererer så et tumbnails utifra "hovedbildet". Tumbnailet plasseres i mappen <tumb>.

 

Er ikke sikker på hvordan dette kan gjøres, men kan man ikke bruke ImageMagic eller GD?

 

På index.php ønsker jeg bare en liten kode som kan linkes mot f.eks visbilde.php. På denne siden skal tumbnailet vises, og det skal velges tilfeldig fra tumb mappen. Hvis du klikker på tumbnailet så åpnes hovedbildet i ett nytt vindu.

 

Vil du ikke da slippe at hele hovedbildet loades sammen med index siden?

Slik at index siden ikke blir for treg å laste.

 

Har lett igjennom hele databasen til hotscripts.com, men finner ingen ting som likner noe særlig på noe som jeg beskriver her. Det eneste jeg har funnet er galleri scripts, og det trenger jeg ikke...

 

Kom meg forslag om hvordan dette kan løses. Kom også med forslag hvis jeg har skrevet noe feil her..

Lenke til kommentar
Videoannonse
Annonse
har ikke gjort bildemanipulering i php, men er det ikke litt kjipt at hvem som helst skal kunne sette inn bilde på siden din?

 

hvis du brukte perl istedet, burde det gå veldig greit med ImageMagick og CGI

 

Tanken var at den upload siden skulle "sjules" slik at vanlig brukere ikke kunne finne den. Dette skal gjøres med et passord script jeg har.

 

Du sa at dette enkelt kunne gjøres i Perl.

Kan du poste et forslag i perl?

Lenke til kommentar
har ikke gjort bildemanipulering i php, men er det ikke litt kjipt at hvem som helst skal kunne sette inn bilde på siden din?

 

hvis du brukte perl istedet, burde det gå veldig greit med ImageMagick og CGI

 

Ehh...Hæ? Hvorfor skulle dette fungere bedre i perl enn php? Jeg er enig i at php er et barnetv-språk i forhold til perl, men php funker like fint til bildeopplasing som perl. Sikkerheten avhenger ikke av skriptspråket i dette tilfellet. :-?

Lenke til kommentar

jeg lar min egen preferanse skinne gjennom ja, men jeg sier ikke at det går bedre i perl.

 

skal mekke et forslag.

 

du trenger Image::Magick modulen i perl. Kjører du redhat finnes det som en egen pakke på rhn.redhat.com, hvis ikke, kjør 'perl -MCPAN -e "install Image::Magick" fra kommandolinja.

 

Hvis du ikke har brukt CPAN før, må du gjennom en førstegangskonfigurering.

Lenke til kommentar

Takk skal du ha Torbjørn.

 

Skal teste dette nå, men er litt usikker: Lagrer jeg kildekoden som et .cgi dokument, slenger det i cgi-bin mappen på servere. Så funker det?

 

Hvordan hadde dette blitt i php?

 

Jeg kan veldig lite om perl og cgi, men kan litt om php..

 

Noen som kan poste et forslag i php?

Lenke til kommentar

joa, hvis du får lov å kjøre cgi script, og har Image::Magick modulen installert, skal det bare være å dytte fila i cgi-bin katalogen.

 

Tror Image::Magick tingen blir problemet. Jeg ser at noen filer lastes opp av med hele path til fila, men jeg klarer ikke å reprodusere feilen selv :(

 

har gjort noen endringer, så hvis de som får feil, ville fortsette å prøve, ville det vært fint!

 

Hvis du kjører redhat, har du ImageMagick-perl tilgjengelig som en rpm fra https://rhn.redhat.com

Lenke til kommentar

Hei Dere.

 

Det viste seg at serveren som hoster mitt domene ikke hadde denne Image::Magick modulen. Jeg fikk heller ikke lov til å kjøre cgi-scripts.

 

Er det noen som kan hjelpe meg med å skrive dette om til php ?

Slik scriptet er i dag fungerer det helt optimalt, det er akkruatt de funskjonene jeg trenger. Dessverre får jeg ikke brukt deg :(

 

Fint om noen kunne poste et forslag til løsning i php...

Lenke til kommentar
..du får sette opp egen server da :)

Har faktisk egen server, men fikk det ikke til å fungere der heller. Har kanskje noe med at jeg ikke har brukt perl, så jeg har ikke brydd meg med å installere sånne moduler.

 

Men uansett: Takk skal du ha..

Lenke til kommentar

#!/usr/bin/perl



# enkelt thumbscript

# litt overkill å bruke

# Image::Magick til dette

#

# av Torbjø[email protected] :)

#



use CGI;

use Image::Magick;

use constant BUFFER_SIZE => 16384;



# parametere for scriptet

my $thumbdir = "thumbs";

my $pictdir  = "pictures";

my $thumb_size = "50x50";



$cgi = new CGI;



# viser kildekoden hvis vi ber om det

if($ENV{'QUERY_STRING'} eq "SOURCE"){

   

   # det finnes sikkert en modul for 

   # å vise kildekode, men pytt-pytt

   # sjøl-gjort er vøl-gjort.

   

   print $cgi->header;

   open(SELF,$0)||die("cannot open self");

   print "<body bgcolor=black text=white>n";

   print "<pre>n";

   while(<SELF>){

s/</</g;

s/>/>/g;

s/(#.*)$/<font color=red>$1</font>/;

print;

   }

   print "</pre>n";

   close FILE;

   

   exit;

   

}



# sjekker om bruker har sendt data

if($ENV{'REQUEST_METHOD'} eq "POST"){

   

   # henter ut filnavnet

   my $filename = $cgi->param('bilde')||die("no file upload");

   

   # passer på at vi kun får siste delen av filnavnet, minus katalognavn

   ($filename) = $filename =~ m|?([^]+)$|;

   

   # hvis fila eksistere, endrer vi filnavn i wget-stil

   if(-e "$pictdir/$filename"){

my ($base,$ext) = $filename =~ /(.*).([^.]+)$/;



# regexpen over *kan* feile hvis ingen . i filnavn

$base = $filename unless $base;



# teller opp hvis fila finnes

$tall = 1;



while(-e "$pictdir/$base.$tall.$ext"){

    $tall++;

}

$filename = "$base.$tall.$ext";

   }

   

   # file handle til upload fil

   $fh = $cgi->upload('bilde')||die("failed creating filehandle");

   

   # lager vår lokale fil

   open(PICT,">$pictdir/$filename")||die("failed to open pict");

   

   # skriver file med innhold fra upload

   while(read($fh,$buffer, BUFFER_SIZE)){

print PICT $buffer;

   }

   

   # viktig for at ImageMagick kan få tilgang til bildet

   close PICT;

   

   # genererer thumb

   

   # lager først vårt image magick objekt

   $thumb = new Image::Magick;

   

   # leser inn fila

   $thumb->Read("$pictdir/$filename");

   $thumb->Resize(geometry => $thumb_size);

   $thumb->Write("$thumbdir/$filename");

   

   # unngår dobbelposting

   print $cgi->redirect($ENV{'SCRIPT_NAME'});

   exit;

   

}



print $cgi->header;



print <<EOH;

<html>

<head>

<title>Filopplasting og Manipulering med Image::Magick</title>

<style type="text/css">

  body { background-color: #ffffee; color: 000000; }

  img { border: 1pt solid blue; }

  hr { border-color: black; width: 300; text-align: left;}

  td { text-align: center; }

  a { text-decoration: none; color: blue;}

  form { border: 1pt solid black; padding: 10; width: 500; text-align: center;}

</style>

</head>

<body>

<h2>Thumbs med Image::Magick</h2>

<form method="POST" enctype="multipart/form-data">

Velg fil: <input type="file" name="bilde"><input type="submit" value="Last Opp">

</form>

EOH



print "<span style="width:200"></span><a href="?SOURCE">[ Se kildekode ]</a>n";



# vi viser tabell kun hvis det finnes bilder tilgjenegelig

if(@files = glob $pictdir."/*"){

   

   # enkel tabell

   print "<h2>Tilgjengelige Bilder</h2>n<hr>n<table cellspacing="5">n<tr><th>Thumb<th>Filnavn<th>Størrelse<th>Daton";

   

   # sorterer på dato

   @files = sort { -M $a <=> -M $b } @files;

   

   # lister opp filene

   foreach (@files){



       # basename fra filnavn

my ($file) = $_ =~ /([^/]+)$/;



# skippet denne dersom ikke thumb eksisterer

next unless -e "$thumbdir/$file";



# henter ut litt fil info

my ($filename,$size) = ($_, -s "$pictdir/$file");



# dato beregning er tungvint

my $mod_age = -M "$pictdir/$file";

my ($sec,$min,$hour,$day,$month,$year) = localtime( time() - $mod_age*24*60*60 );



# vanlig epoch korreksjon

$year += 1900;

$month += 1;



my $date = "$hour:$min:$sec $day/$month $year";



print "<tr><td><a href="$filename"><img src="$thumbdir/$file"></a><td>$file<td>$size<td>$daten";



   }

   

   print "</table>n";

   

}



 

Kan noen hjelpe meg med å skrive om denne til PHP? Har spurt mange ganger nå, men det er ikke så mange som svarer...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...