Avatar billede jannek_ek Nybegynder
12. oktober 2005 - 21:52 Der er 6 kommentarer

image resize, jeg fatter det ikke

Jeg har forsøgt at lave et script der laver en lille kopi af billederne til en indexside, men det vil ikke helt som mig... Har brugt et godt stykke tid på det nu, og bliver nødt til at be om hjælp nu...

  header("content-type: image/jpeg");
  list($width, $height) = getimagesize("gfx/gallery/".$filnavn);
  if ($width > 200)
  {
    $nwidth = 200;
    $nheight = ($width / 200) / $height;
  }
  if ($nheight > 200)
  {
    $nnheight = 200;
    $nwidth = ($nheight / 200) / $nwidth;
    $nheight = $nnheight;
  }
  $newimage = imagecreatetruecolor($nwidth, $nheight);
  $oldimage = imagecreatefromjpeg("gfx/gallery/".$filnavn);
  imagecopyresampled($newimage, $oldimage, 0, 0, 0, 0, $nwidth, $nheight, $width, $height);
  imagejpeg($newimage, "gfx/small/".$filnavn, 100);

ja jeg har egentlig ingen anelse om hvad der går galt, men den kommer med følgende fejl:

Warning: Cannot modify header information - headers already sent by (output started at /web/www/frac/users/noerwerk/top.php:14) in /web/www/frac/users/noerwerk/done.php on line 39

Warning: imagecreatetruecolor(): Invalid image dimensions in /web/www/frac/users/noerwerk/done.php on line 52

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /web/www/frac/users/noerwerk/done.php on line 54

Warning: imagejpeg(): supplied argument is not a valid Image resource in /web/www/frac/users/noerwerk/done.php on line 55

Der står noget om top.php, men den sider er næsten ren html, der bliver inkuderet før dette script.
Avatar billede jannek_ek Nybegynder
12. oktober 2005 - 21:54 #1
og min server har GDlib 2.0
Avatar billede nizo Nybegynder
12. oktober 2005 - 22:28 #2
Der maa ikke være noget tekst overhovedet før header("content-type: image/jpeg"); kun php kode evt. prøv ogsaa at fjerne evt. tomme linier i toppen.
Avatar billede jannek_ek Nybegynder
12. oktober 2005 - 22:42 #3
Billedet “http://www.noerwerk.frac.dk/done.php?page=art” kan ikke vises, da det indeholder fejl.

hmm nej nu melder den bare fejl...

du kan få hele scriptet, men det meste har ikke noget med det her at gøre...:

<?php
session_start();
header("content-type: image/jpeg");
$page = $_GET["page"];
function edit_text($tekst)
{
  $tekst = str_replace( "<", "&lt;", "$tekst" );
  $tekst = str_replace( ">", "&gt;", "$tekst" );
  $tekst = str_replace( "  ", " &nbsp;", "$tekst" );
  $tekst = str_replace( "\\", "\\\\", "$tekst" );
  $tekst = str_replace( "
", "<br>", "$tekst" );
  return $tekst;
}
include("top.php");
$conn = mysql_connect("localhost", "noerwerk", "*******") or die(mysql_error());
mysql_select_db("noerwerk") or die(mysql_error());
if ($_SESSION["admin"] == true)
{
  if ($page == "art" || $page == "stripes")
  {
  $konfiguration["bibliotek"] = "gfx/gallery";
  $konfiguration["max_soerrelse"] = "2000";
  $fra = $_FILES["upfil"]["tmp_name"];
  $type = $_FILES["upfil"]["name"];
  $type = strtolower(substr($type, strlen($type) - 4, 4));
  if ($type == "jpeg")
  {
    $type = ".jpeg";
  }
  $filnavn = date("YmdHis").$type;
  $til = $konfiguration["bibliotek"]."/".$filnavn;
  if (function_exists("move_uploaded_file"))
  {
    move_uploaded_file($fra, $til);
  } else
  {
    copy($fra, $til);
  }
  header("content-type: image/jpeg");
  list($width, $height) = getimagesize("gfx/gallery/".$filnavn);
  if ($width > 200)
  {
    $nwidth = 200;
    $nheight = ($width / 200) / $height;
  }
  if ($nheight > 200)
  {
    $nnheight = 200;
    $nwidth = ($nheight / 200) / $nwidth;
    $nheight = $nnheight;
  }
  $newimage = imagecreatetruecolor($nwidth, $nheight);
  $oldimage = imagecreatefromjpeg("gfx/gallery/".$filnavn);
  imagecopyresampled($newimage, $oldimage, 0, 0, 0, 0, $nwidth, $nheight, $width, $height);
  imagejpeg($newimage, "gfx/small/".$filnavn, 100);
  mysql_query("insert into ".$page." (name, comment, file) values ('".edit_text($_REQUEST["name"])."', '".edit_text($_REQUEST["comment"])."', '$filnavn')") or die(mysql_error);
  echo "<p>Filen er blevet uploadet!
        <br>
        <br>
        Filnavn:
        <br>
        ".$filnavn."
        <br>
        <br>
        Navn:
        <br>
        ".$_REQUEST["name"]."
        <br>
        <br>
        Beskrivelse:
        <br>
        ".$_REQUEST["comment"]."
        </p>";
  } else if ($page == "image")
  {
 
  } else
  {
  $head = addslashes(edit_text($_REQUEST["head"]));
  $content = addslashes(edit_text($_REQUEST["content"]));
  $date = date("j/n-y");
  mysql_query("insert into ".$page." (head, content, date, time) values ('$head', '$content', '$date', now())") or die(mysql_error);
  echo "<p>Siden er blevet opdateret</p>";
  }
} else
{
  echo "<p>Du er ikke logget ind!</p>";
}
include("bottom.php");
php?>
Avatar billede xyborx Nybegynder
13. oktober 2005 - 12:33 #4
Hvis jeg forsøger at åbne den adresse, så får jeg et html-dokument tilbage med "Du er ikke logget ind". Det hænger ikke sammen med header('Content-Type: image/jpeg'). Den header skal jo kun sendes hvis billedet virkerlig er klar til at blive sendt.

Mit gæt er at du ikke er logget ind, og derfor får den fejlmelding. Men da der bliver sendt en forkert header, fejlfortolker browseren dokumentet som et billede, selvom det i virkeligheden er et html-dokument.

curl er din ven til at finde den slags problemer:
curl -s 'http://www.noerwerk.frac.dk/done.php?page=art'|less
Avatar billede nizo Nybegynder
13. oktober 2005 - 13:24 #5
Jeg har selv haft samme problem!
Og jeg løste problemet ved at fjerne alle MySQL forespørgslerne.. Du maa tænke paa at et billede ikke kan give/indholde MySQL infomationer..
Avatar billede jannek_ek Nybegynder
13. oktober 2005 - 14:58 #6
hmm jamen det hele virkede inden jeg brugte imagecopyresampled... altså den kunne gemme billederne, og sende billedinformationer til databesen, så jeg kan ikke se hvordan det kan forhindre noget
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