Gå til innhold

Thumbscript printer bare ut URLen.


Anbefalte innlegg

Hei, jeg driver på med et thumbscript, men når jeg laster opp bilde og det skal bli thumbs får jeg bare fram urlen:S den lager ingen thumbs, men scriptet ser rett ut, er rett og slett forvirret:O

<?php
function thumbnail($i) { 
// The file
$filename = $i;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
$info = getimagesize($filename);
$new_width = 150;
$new_height = 150;
$cutx = ($info[0]/2)-($new_width/2);
$cuty = ($info[1]/2)-($new_height/2);

// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, $cutx, $cuty, $new_width, $new_height, $width, $height);

// Output
imagejpeg($image_p);
}
?>

Takk for hjelp :love:

Lenke til kommentar
Videoannonse
Annonse

Vi må jo få se hvor(dan) funksjonen kalles i scriptet ditt også.

Dessuten sjekker du ikke om imagecreate-funksjonene faktisk funker, sjekk for null såvidt jeg husker.

Ikke glem å frigjøre minne igjen med imagedestroy.

I headeren burde du også sende med størrelsen på alle binære data, dette gjelder da også bilder.

En måte å finne ut størrelsen på bildet er å bruke output buffering og skrive bildet til bufferen, så kalle funksjonen som jeg ikke husker hva heter i farten, som sier størrelsen på bufferen. Denne størrelsen er da størrelsen på bildet ditt.

Lenke til kommentar

hei, har litt lite tid for tiden, men paster kjapt her, så kan dere jo alltids kommentere vis dere ser noe galt, vis dere vil da selvsagt. Takk uansett her kommer litt av kildekoden jeg bruker til og fremkalle funksjonen;

 

<?php
$maande = date('F');
$tittel = $_POST['tittel'];
$innhold = $_POST['innhold'];
$type = $_POST['type'];
$dato = date('d/m - Y');
$tmp_fil = $_FILES['opplastetfil']['tmp_name'];
$pic = $_FILES['opplastetfil']['name'];
$pic = str_replace(" ","",$pic);
$realnameogpath = "uploads/thumbs/" . $_FILES['opplastetfil']['name'];
if (isset($_POST['hovedkampanje'])) { $hovedkampanje = "true"; }
else { $hovedkampanje = "false"; }
if (isset($_POST['submit'])){
thumbnail($_FILES['opplastetfil']['name']);
unlink($pic);
mysql_query("INSERT INTO kampanjer (dato, bilde, tittel, innhold, type, hovedkamp, maaned) 
VALUES ('$dato', '$realnameogpath', '$tittel', '$innhold', '$type', '$hovedkampanje', '$maande')")
 or die("En feil har oppst&aringdd,vennligst kontakt sideansvarlig");
echo "Filen ".  str_replace(" ", "_", $pic) . " ble lastet opp";
}
else {
if (!move_uploaded_file($_FILES['opplastetfil']['tmp_name'], $target_path)) {
echo "Du har ikke lastet opp noen fil enda!";
}
}
?>

 

Dette er noe av det første omtrent jeg har skrevet selv av nettsider som faktisk fungerer, så at ting er blitt limt inn og klippet ut osv, derfor er det litt rotete, fordi noe er fjernet, og variabler som ikke trengs er der også. Tror jeg skal skrive hele filen på nytt uansett, men takker for svar, hadde vært artig og fått dette til og virke.

Endret av [email protected]
Lenke til kommentar

Les litt her: http://no.php.net/manual/en/features.file-upload.php

Kort oppsummering av hvordan filopplasting gjøres:

Filen velges av brukeren, før han/hun trykker send.

PHP legger nå filen i tmp-mappen på serveren, som er spesifisert i php.ini. Dette er veldig ofte /tmp på linux-servere.

Deretter fyller PHP opp arrayet $_FILES med følgende info:

$_FILES['userfile']['name']

 

The original name of the file on the client machine.

$_FILES['userfile']['type']

 

The mime type of the file, if the browser provided this information. An example would be "image/gif". This mime type is however not checked on the PHP side and therefore don't take its value for granted.

$_FILES['userfile']['size']

 

The size, in bytes, of the uploaded file.

$_FILES['userfile']['tmp_name']

 

The temporary filename of the file in which the uploaded file was stored on the server.

$_FILES['userfile']['error']

 

The error code associated with this file upload. This element was added in PHP 4.2.0

Der 'userfile' er navnet du spesifiserte i input-taggen i upload-formen.

Dersom du vil beholde filen, er det nå på tide å flytte filen ut fra /tmp og inn i mappen der du vil ha den.

Dette gjøres enklest (og best) ved å bruke move_uploaded_file

Det første argumentet er i 99.9% av tilfellene $_FILES['userfile']['tmp_name'], mens det andre argumentet er pathen _og navnet_ til der du vil at filen skal ende.

Dersom move_uploaded_file ikke feilet (sjekk alltid dette), så ligger den opplastede filen nå der du spesifiserte som andre argument til move_uploaded_file og det er først _nå_ du burde begynne å gjøre ting med filen.

 

@[email protected]:

Det du gjør feil er at du prøver å jobbe med filen før den er flyttet, og det er forsåvidt greit, men du jobber med feil filnavn.

$_FILES[...]['name'] er navnet på filen på _brukerens_ maskin. På serveren er det

$_FILES[...]['tmp_name'] som gjelder. Dette er som oftest en path (/tmp) og navnet på filen som er tilfeldig sammensatt streng av tegn, f.eks. /tmp/Abcj46K.

Derfor når du bruker move_uploaded_file så er første argument som regel $_FILES[...]['tmp_name'] mens andre argument som regel er en sti og navnet på filen f.eks. "uploads/pics/".$_FILES[...]['name'] der du vil at filen skal ende opp.

Så for at scriptet du ditt skal funke, så må du gjør en endring til thumbnailkalet.

Her er det to muligheter:

1) thumbnail($_FILES['opplastetfil']['name']); byttes ut med thumbnail($_FILES['opplastetfil']['tmp_name']); for å jobbe direkte på tmp-filen, uten å flytte den.

2) Kalle thumbnail($path) _etter_ å ha kalt move_uploaded_file der $path peker til dit du flyttet filen.

Endret av Nazgul
Lenke til kommentar
hei, nazgul. Husker en gang jeg klagde på ett eller annet du skrev, men må virkelig si du er behjelpelig og det er vakkert at du tar deg tid og forklare så gjennomtenkt og godt som du gjør, tusen takk for svar også.

7218304[/snapback]

Takk for hyggelig tilbakemelding!

Jeg prøver å hjelpe til der jeg føler det trengs og når det er riktig sted å spørre.

Dessverre har PHP-forumet en tendens til å bli offer for alle mulige verdensspørsmål, og da kan jeg nok virke både krass og uhjelpsom, men også i de postene prøver jeg å gi et kort svar. Disse svarene er muligens mindre hjelpsomme f.eks. i form av "bare" en link. Dette fordi de skal forstå at de spør på feil sted, og at det er mer hjelp å få ved å spørre på riktig sted.

 

Jeg har forsåvidt godt mer over til bare å rapportere posten, istedenfor å skrive noe. Dette virker sikkert strengt for noen, ettersom forumet handler om å diskutere, hjelpe og prate sammen, men svært mange har blitt jaget bort av forumet, delvis fordi det er svært mange nybegynnerspørsmål og lite diskusjon av mer avanserte spørs, såfremt som mye feilposting som i lengden blir ganske irriterende.

Det første irriterer meg ikke så mye, ettersom jeg var fersk selv en gang og dermed har stor forståelse for dette, men feilpostinger begynner det å bli så mange av, at jeg føler det trengs flere moderatorer/mere fokus på PHP-delen av forumet.

Vi fikk en ny kategori, som brukes sånn delvis, men mange av de postene i den kategorien der er flyttet dit i ettertid pga. flittig bruk av rapporteringsknappen. Dette burde være unødvendig.

Savner dog en kategori for litt mer "avansert" PHP. Ikke for å tråkke noen på tærne, men fordi kunnskapsnivået på forumet er forskjellig, og det trengs en kategori man kan spørre om litt vanskeligere spørsmål uten av spørsmålet forsvinner i mengden av enklere spørsmål. Det er viktig at vi stimulerer de få PHP-folkene som er igjen og sitter på mye kunnskap, fordi de er en viktig del av forumet og viktige for at folk skal kunne utvikle seg videre.

 

 

 

(Beklager at dette ble mye "klaging", men det ble bare sånn)

Endret av Nazgul
Lenke til kommentar

Hei, og bra forklart, når jeg prøver og se ting fra ditt ståsted innrømmer jeg at jeg skjønner deg og hva du mener. Da var det sagt, nå til topic;

får fortsatt bare fram urlen når jeg prøver og gå inn på siden kampanjer.php

her er kampanjer.php filen;

<?php
include ("../inc/bekreftlogginn.php");
include("thumbnail.php");
?>
<td width="80%">
<div style="position: relative; left: 90px; padding-top: 10px;">
<h4>Feltene merket med * forran M√Ö fylles ut, alt annet er valgfritt.</h4>
<form enctype="multipart/form-data" action="" method="POST">
* <input type="text" name="tittel" value="Tittel" style="margin-bottom: 5px; border: 1px solid #000000;"><br />
* <textarea name="innhold" rows="7" cols="50" style="border: 1px solid #000000;">Skriv inn innhold her</textarea>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" style="border: 1px solid #000000;"/><br />
Velg hvilken kampanjegruppe kampanjen passer best til<br />* <select name="type">
<option value="fastfood">Fastfood</option>
<option value="kaffe">Kaffe</option>
<option value="kiosk">Kiosk</option>
<option value="diverse">Diverse</option>
<option value="is">Is</option>
<option value="film">Film</option>
<option value="telekort">Telekort</option>
<option value="bilpleie">Bilpleie</option>
</select><br /><br />
<input type="checkbox" name="hovedkampanje" value="" style="border: 1px solid #000000"> Kryss av for hovedkampanje! (Hovedkampanje kommer på forsiden og vil forsidekampanjen på kampanjesiden!)<br /><br /> Velg fil:<br />* <input name="opplastetfil" type="file" style="border: 1px solid #000000;"/><br />* <input type="submit" value="Post kampanjen!" style="border: 1px solid #000000; margin-top: 5px;"/> </form> </div>
<?php
$x = $_GET['x'];
$hentutkampanjer = mysql_query("SELECT * FROM kampanjer ORDER BY id DESC")
or die("Det har forekommet en teknisk feil, kunne ikke koble til databasen!");
if ($_GET['s'] == "Vis"){
$slettvalg = "Skjul";
       $hentutantall = mysql_query("SELECT * FROM kampanjer");
       $antallkampanjer = mysql_num_rows($hentutantall);
       if ($antallkampanjer < 1) {
               echo "<div style='position: relative; left: 90px; padding-top: 10px;'>Du har ingen kampanjer, dermed er det ikke mulig og slette noe<br /></div>";
       }
echo "<div style='position: relative; left: 90px;'>Du har " . $antallkampanjer . " kampanje(r):<br /></div>";
while ($kinnhold = mysql_fetch_array($hentutkampanjer)) {
$id = $kinnhold['id'];
$dato = $kinnhold['dato'];
$tittel = $kinnhold['tittel'];
echo "<div style='position: relative; left: 90px;'>" . $tittel . " " . $dato ." " . "<a href=\"http://www.bodoelv.no/administrasjon/administrasjon.php?p=kampanjer&x=$x&s=$slettvalg&r=$id\">Slett</a><br /></div>"; }
echo "<a href=\"?p=kampanjer&x=$x&s=$slettvalg&r=alle\">Slett alle kampanjene, inkludert bilder!</a>";
}
else {
$slettvalg = "Vis";
}
if (isset($_GET['r'])) {
$id2 = $_GET['r'];
$query = mysql_query("SELECT bilde FROM kampanjer WHERE id = '$id2'")
or die(mysql_error());
$fetch = mysql_fetch_array($query);
$realnameogpath = "uploads/thumbs/" . $_FILES['opplastetfil']['name'];
$bilde = $fetch['bilde'];
$bilde = str_replace(" ", "", $realnameogpath);
unlink($bilde);
mysql_query("DELETE FROM kampanjer WHERE id = $id2")
 or die("Kunne ikke slette, problemer med databasen!");
}
if ($_GET['r'] == "alle") {
$sql = mysql_query("SELECT id, bilde FROM kampanjer");
while($array = mysql_fetch_array($sql)) {
 $id = $array['id'];
 $bilde = $array['bilde'];
 $bilde = str_replace(" ","", $bilde);
 unlink ($bilde);
 mysql_query("DELETE FROM kampanje WHERE id = $id");
}}
 
?> 
<div style="position: relative; left: 90px; padding-top: 10px;"><a href="http://www.bodoelv.no/administrasjon/administrasjon.php?p=kampanjer&x=<?=$x?>&s=<?=$slettvalg?>"><?=$slettvalg?> valg for sletting</a></div>
</td>
<?php
if (isset($_POST['hovedkampanje'])) { $hovedkampanje = "true"; }
else { $hovedkampanje = "false"; }
move_uploaded_file($_FILES['opplastetfil']['tmp_name'],"../uploads/thumbs/".$_FILES['opplastetfil']['tmp_name']);
thumbnail("../uploads/thumbs/".$_FILES['opplastetfil']['tmp_name'])
or die(mysql_error());
$maande = date('F');
$filnavn = "uploads/thumbs/" . $_FILES['opplastetfil']['tmp_name'];
$dato = date(d - m / Y);
$tittel = $_POST['tittel'];
$innhold = $_POST['innhold'];
$type = $_POST['type'];

mysql_query("INSERT INTO kampanjer (dato, bilde, tittel, innhold, type, hovedkamp, maaned)
VALUES ('$dato', '$filnavn', '$tittel', '$innhold', '$type', '$hovedkampanje', '$maande')")
or die("En feil har oppst&aringdd,vennligst kontakt sideansvarlig");
echo "Filen ".  str_replace(" ", "_", $pic) . " ble lastet opp";
?>

thumbnail.php filen;

<?php
function thumbnail($i) { 
// The file
$filename = $i;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
$info = getimagesize($filename);
$new_width = 150;
$new_height = 150;
$cutx = ($info[0]/2)-($new_width/2);
$cuty = ($info[1]/2)-($new_height/2);

// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, $cutx, $cuty, $new_width, $new_height, $width, $height);

// Output
imagejpeg($image_p);
imagedestroy($image_p);
}
?>

 

Håper jeg forstod deg rett nazgul, mener og ha fikset litt på det, så tror jeg forstod poenget ditt på det området rett. Uansett, når jeg går inn på kampanjer.php kommer det bare opp urlen, mens det i tittelen i safari står type (jpeg). Er 99.99% sikker på at det skyldes innkorrekt bruk av thumbnail.php funksjonen. Takk for svar affal!

Lenke til kommentar

Du spytter ut en del html i toppen av scriptet, dvs. at headeren browseren får er text/html. Så når du kaller thumbnail() prøver du å si at det som kommer er et bilde. Et bilde er som kjent ikke html, derfor vil ikke den delen funke. (merkelig at du ikke har fått en advarsel med "headers already sent, output started in...."

sørg for å sette på full error_reporting ved å skrive dette på toppen av scriptet:

<?php
error_reporting( E_ALL );
?>

 

En mulighet for å løse problemet er å lage en php-fil til som heter thumbnail.php som f.eks. kalles slik <img src="thumbnail.php?p=path_til_bilde"/>, bare husk å sjekke $_GET['p'] for cross site scripting.

Da trenger du ikke funksjonen thumbnail(), dvs. du fjerner function thumbnail($i){ og den siste krøllparantesen. og setter $filname til $_GET['p'] istedenfor.

thumbnail.php burde da se slik ut:

PHP

<?php

// The file

/***************************

HUSK Å TESTE $_GET['p'] FOR

 XSS (CROSS SITE SCRIPTING)

***************************/

$filename = $_GET['p'];

 

// Content type

header('Content-type: image/jpeg');

 

// Get new dimensions

$info = getimagesize($filename);

$new_width = 150;

$new_height = 150;

$cutx = ($info[0]/2)-($new_width/2);

$cuty = ($info[1]/2)-($new_height/2);

 

// Resample

$image_p = imagecreatetruecolor($new_width, $new_height);

$image = imagecreatefromjpeg($filename);

imagecopyresampled($image_p, $image, 0, 0, $cutx, $cuty, $new_width, $new_height, $width, $height);

 

// Output

imagejpeg($image_p);

imagedestroy($image_p);

?>

 

Dog det er ulemper ved dette også, ved at da må et thumbnail lages hver gang, istedenfor at du lagrer det i en fil for senere bruk.

 

Ellers ser jeg at du ikke helt har fått på plass moved_uploaded_file

Denne skal du i ditt tilfelle kalle slik:

<?php
if( move_uploaded_file( $_FILES['opplastetfil']['tmp_name'], 'uploads/thumbs/'.$_FILES['opplastetfil']['name'] ) )
{
//opplasting OK, jobb videre med filen her
}
else
{
// opplasting feilet
}
?>

Dersom dette ble litt kryptisk, kan jeg sikkert skrive litt mer kode :)

 

EDIT: #¤%&/ BB-PHP-drit, skrev jo over halve koden min.

Endret av Nazgul
Lenke til kommentar

Takk igjen nazgul, du har virkelig vært min lille helt idag:P

Uansett, det der hjalp lite, men når jeg nå har sømmet meg litt sammen her forstår jeg også logistikken din med if ( move_uploaded_file etc etc...) og det hjalp veldig tør jeg påstå. nå er det bare et problem ser det ut til, og vis du gidder kan du jo ta en titt på det, men for all del. Jeg setter stor pris på det du har hjulpet med hittil og har forståelse for at du kanskje ikke gidder spekulere i mitt siste problem, men for all del, hjelp taes selvsagt imot med stor takknemlighet.

her er vertfall errorene jeg får fra scriptet overfor med din modifisering;

 

Warning: move_uploaded_file(../uploads/thumbs//tmp/phpl7RdN4) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/2/b/bodoelv/www/administrasjon/kampanjer.php on line 75

 

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpl7RdN4' to '../uploads/thumbs//tmp/phpl7RdN4' in /home/2/b/bodoelv/www/administrasjon/kampanjer.php on line 75

Lenke til kommentar

Du har ikke endret slik jeg sa, ser det ihvertfall ut til:

Dette fordi: /uploads/thumbs//tmp/phpl7RdN4

den uthevede delen der skal ikke være slik.

Warning: move_uploaded_file(../uploads/thumbs//tmp/phpl7RdN4) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/2/b/bodoelv/www/administrasjon/kampanjer.php on line 75

 

if( move_uploaded_file( $_FILES['opplastetfil']['tmp_name'], 'uploads/thumbs/'.$_FILES['opplastetfil']['name'] ) )

 

Sjekk den delen jeg har uthevet over, tipper den står som $_FILES['opplastetfil']['tmp_name'] hos deg.

 

Sjekk også at uploads/thumbs er opprettet.

Endret av Nazgul
Lenke til kommentar

Først, du hadde rett (igjen) jeg hadde tmp_name, du må være synsk eller veldig vant med nybegynnerlol spm. 2. uploads/thumbs/ er opprettet, det gjorde jeg personlig i ssh og sjekket nå igjen, den eksisterer.

 

Nå ble errormeldingene borte, men bilde blir ikke lagt inn i den mappen merkelig nok.

Noen idè, skjønner at jeg ikke skal bruke diskusjon som en live chat, men men, si ifra om jeg maser for mye og misbruker forumet.

 

Her er vertfall den vesentlige delen av kampanjer.php igjen helt oppdatert.

<?php
if (isset($_POST['hovedkampanje'])) { $hovedkampanje = "true"; }
else { $hovedkampanje = "false"; }
if (move_uploaded_file($_FILES['opplastetfil']['name'],"../uploads/thumbs/".$_FILES['opplastetfil']['name'])){
thumbnail("../uploads/thumbs/".$_FILES['opplastetfil']['tmp_name'])
or die(mysql_error());
$maande = date('F');
$filnavn = "/uploads/thumbs/" . $_FILES['opplastetfil']['tmp_name'];
$dato = date(d - m / Y);
$tittel = $_POST['tittel'];
$innhold = $_POST['innhold'];
$type = $_POST['type'];

mysql_query("INSERT INTO kampanjer (dato, bilde, tittel, innhold, type, hovedkamp, maaned)
VALUES ('$dato', '$filnavn', '$tittel', '$innhold', '$type', '$hovedkampanje', '$maande')")
or die("En feil har oppst&aringdd,vennligst kontakt sideansvarlig");
echo "Filen ".  str_replace(" ", "_", $pic) . " ble lastet opp";
}
else {
mysql_error();
}
?>

Lenke til kommentar

Hmm, virker som at du gjør litt mye copy & paste uten å forstå hva koden gjør.

Her har du en mer rettet utgave, men jeg ikke helt sikker på om den funker.

Hovedproblemet var ihvertfall at du brukte 'name' i begge argumentene toø mpve_uploaded_file, noe som dessverre tyder på én av to ting.

Enten fikk du ikke med det alle detaljene i innlegget mitt tidligere, ellers så skjønte du det ikke. Og dersom sistenevnte så er det min feil, fordi jeg ikke har forklart godt nok.

Koden under er sikkert ikke feilfri, men den er mer oversiktlig og burde være enklere å rette.

PHP

<?php

 //hvorfor ikke $hovedkampanje er "ekte" boolsk, istedenfor strenger er jo et godt spørsmål da...

if ( isset( $_POST['hovedkampanje'] ) )

{ 

  $hovedkampanje = "true";

}

else 

{ 

  $hovedkampanje = "false";

}

$filnavn = "/uploads/thumbs/" . $_FILES['opplastetfil']['name'];

if ( move_uploaded_file( $_FILES['opplastetfil']['tmp_name'], '..'.$filnavn ) )

{

  // FUNKSJONEN thumbnail() VIL GARANTERT IKKE FUNGERE SOM 

     // ØNSKET FORDI BILDER IKKE ER HTML, LES FORRIGE INNLEGG

  // thumbnail('..'.$filnavn);

  $maande = date('F');

  $dato = date(- m / Y);

  $tittel = mysql_real_escape_string( $_POST['tittel'] );

  $innhold = mysql_real_escape_string( $_POST['innhold'] );

  $type = mysql_real_escape_string( $_POST['type'] );

 

mysql_query("INSERT INTO kampanjer (dato, bilde, tittel, innhold, type, hovedkamp, maaned)

VALUES ('$dato', '$filnavn', '$tittel', '$innhold', '$type', '$hovedkampanje', '$maande')")

 or die("En feil har oppst&aringdd,vennligst kontakt sideansvarlig");

echo "Filen ".  str_replace(" ", "_", $pic) . " ble lastet opp";

}

else

{

echo 'move_uploaded_function failed';

}

?>

Endret av Nazgul
Lenke til kommentar

jeg har fattet såpass at man ikke kan printe noe data til browseren når man lager et bilde. Men kan ikke se at jeg gjør det her, likavell funker det ikke;

<?php
}
else {
if ( isset( $_POST['hovedkampanje'] ) )
{ 
 $hovedkampanje = "true";
}
else 
{ 
 $hovedkampanje = "false";
}
$filnavn = "/uploads/thumbs/" . $_FILES['opplastetfil']['name'];
if ( move_uploaded_file( $_FILES['opplastetfil']['tmp_name'], '..'.$filnavn ) )
{

 $maande = date('F');
 $dato = date(d - m / Y);
 $tittel = mysql_real_escape_string( $_POST['tittel'] );
 $innhold = mysql_real_escape_string( $_POST['innhold'] );
 $type = mysql_real_escape_string( $_POST['type'] );

mysql_query("INSERT INTO kampanjer (dato, bilde, tittel, innhold, type, hovedkamp, maaned)
VALUES ('$dato', '$filnavn', '$tittel', '$innhold', '$type', '$hovedkampanje', '$maande')");
$file = '$filnavn';

header('Content-type: image/jpeg');

list($width, $height) = getimagesize($file);
$modwidth = 150;
$modheight = 150;

$tn= imagecreatetruecolor($modwidth, $modheight);
$source = imagecreatefromjpeg($file);
$cutx = ($info[0]/2)-($new_width/2);
$cuty = ($info[1]/2)-($new_height/2);

imagecopyresized($tn, $source, 0, 0, $cutx, $cuty, $modwidth, $modheight, $width, $height);

imagejpeg($tn);
}
}
?>

Noen som ser dataen jeg sender som gjør at det ikke funker?, kthankz!

Lenke til kommentar
Noen som ser dataen jeg sender som gjør at det ikke funker?, kthankz!

7225116[/snapback]

Såvidt eg ser beholder du bare bildet i minnet, du sender det aldri til nettlesaren....

http://no.php.net/imagejpeg - imagejpeg(a) skriv bildet som ei jpeg-fil til filnamnet a, og sender det *ikkje* til nettlesaren.

 

Kan tenke meg at dette er feilen?

7226066[/snapback]

Det du sier er feil.

Første parameter til imagejpeg er en resource opprettet med imagecreate*-funksjonene. Dersom bare ett parameter er spesifisert, sendes bildet til browseren. Dersom du skal skrive til fil må du spesifisere TO parametere, der det andre parameteret er hvor du vil ha filen og hva den skal hete.

Lenke til kommentar
jeg har fattet såpass at man ikke kan printe noe data til browseren når man lager et bilde. Men kan ikke se at jeg gjør det her, likavell funker det ikke;

*snip*

Noen som ser dataen jeg sender som gjør at det ikke funker?, kthankz!

7225116[/snapback]

Tja, du bruker jo variable som ikke er spesifisert noe sted her:

$cutx = ($info[0]/2)-($new_width/2);

$cuty = ($info[1]/2)-($new_height/2);

Det er dog merkelig at du ikke får noen feilmeldinger, har du skrudd dem på slik jeg beskrev tidligere?

Legg til litt feilsjekking du, sjekk retur fra funksjonene du bruker osv., og se hvor det feiler.

Lenke til kommentar

hei igjen, nazgul. Har fått en god kompis, som digger og ruler php til og skrive meg en funksjon som funket supert;)

Til alle som måtte trenge en, her er den;

<?php

/* her er funksjonen */
function make_thumb($input, $output)
{
   list($width, $height) = getimagesize($input);
   if($width == 0 || $height == 0)
       return false;

   /* DENNE SETTER DU SELV */
   $new_width = 170;

   $p = ($new_width/$width);
   $new_height = floor($height*$p);

   $thumb = imagecreatetruecolor($new_width, 
($new_height>$new_width?$new_width:$new_height));

   if(strstr($input, ".jpg"))
   	$source = imagecreatefromjpeg($input);
else
 $source = imagecreatefrompng($input);  

   imagecopyresized($thumb, $source, 0,0,  0,0, $new_width, $new_height, 
       $width, $height);

   imagejpeg($thumb, $output);

   return true;
}
?>

Takk for hjelpen nazgul og dere andre;) Det løste seg til slutt, som det bruker om man bare er tålmodig:)

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...