Avatar billede madiedk Nybegynder
28. februar 2007 - 17:21 Der er 12 kommentarer og
1 løsning

fejl med visning af billede

hej jeg har lavet noget php kode hvor man uploader et jpeg billede og så er jeg kommet til at man skal se det billede man har uploadet som et thumbnail, men når man skal vise villede med imagejpeg() så kommer der bare en masse underlige tegn på hele siden håber der er nogle der kan hjælpe.

her er koden:



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
 
  <?php
  include("config.inc.php");
 
      $known_photo_types = array(
                        'image/pjpeg' => 'jpg',
                        'image/jpeg' => 'jpg',
                        'image/gif' => 'gif',
                        'image/bmp' => 'bmp',
                        'image/x-png' => 'png'
                    );
 
  $gd_function_suffix = array(
                        'image/pjpeg' => 'JPEG',
                        'image/jpeg' => 'JPEG',
                        'image/gif' => 'GIF',
                        'image/bmp' => 'WBMP',
                        'image/x-png' => 'PNG'
                    );
 
 
 
  if (isset($_POST["pris"]))
{

  $photos_uploaded = $_FILES['fil'];
    $photo_titel = $_POST["titel"];
  $photo_pris = $_POST["pris"];

mysql_query( "INSERT INTO gallery_photos(`photo_filename`, `photo_caption`, `photo_price`) VALUES('0', '".addslashes($photo_titel)."', '".addslashes($photo_pris)."')" );

  $new_id = mysql_insert_id();
    $filetype = $photos_uploaded['type'];
    $extention = $known_photo_types[$filetype];
    $filename = $new_id.".".$extention;

    mysql_query( "UPDATE gallery_photos SET photo_filename='".addslashes($filename)."' WHERE photo_id='".addslashes($new_id)."'" );

copy($photos_uploaded['tmp_name'], $images_dir."/".$filename);
 
      $size = GetImageSize( $images_dir."/".$filename );
                if($size[0] > $size[1])
                {
                    $thumbnail_width = 200;
                    $thumbnail_height = (int)(200 * $size[1] / $size[0]);
                }
                else
                {
                    $thumbnail_width = (int)(200 * $size[0] / $size[1]);
                    $thumbnail_height = 200;
                }
 
  $img = imagecreatefromjpeg($images_dir."/".$filename);
 
  if ($img)
        echo hejgd2;;

 
 
  $destination_handle = ImageCreatetruecolor ( $thumbnail_width, $thumbnail_height );
 
  ImageCopyResized( $destination_handle, $img, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $size[0], $size[1] );
 
 
        $img = $destination_handle;
 
 
imagejpeg($img,"", 100);



 
  echo $new_id;
  echo $photo_titel;
  echo $photo_pris;
 


}
else{
?>
<form method="post" ENCTYPE="multipart/form-data" action="index.php">

  <input type="file" name="fil">
  <input type="text" value="titel1" name="titel">
  <input type="text" value="pris1" name="pris">
  <input type="submit" value="Send">

</form>

<?
}

?>

  </body>
</html>
Avatar billede jakobdo Ekspert
28. februar 2007 - 19:05 #1
Når du viser et billede, så vil jeg anbefale dig at gøre det anderledes!
Enten skal du lave det på denne måde:
<?php
header('Content-Type: image/jpeg');
imagejpeg($img,"", 100);
imagedestroy($img);
?>

og så kald php filen ovenover, som:

<img src="fil_navn.php?img=navnet_på_billedet">
Avatar billede madiedk Nybegynder
28. februar 2007 - 19:30 #2
den her fil, skal bare bruges til at uploade et billede og så skal man lige kunne se det billede man har uploadet når det er gjort. jeg er nybegynder til php så forstår ikke 100% hvad du mener, måske du kan ændre det i min kode og vise det? eller det er måske for besværligt.
Avatar billede jakobdo Ekspert
28. februar 2007 - 19:46 #3
Prøv denne kode:

<?php
include("config.inc.php");

$known_photo_types = array(
    'image/pjpeg' => 'jpg',
    'image/jpeg' => 'jpg',
    'image/gif' => 'gif',
    'image/bmp' => 'bmp',
    'image/x-png' => 'png'
);

$gd_function_suffix = array(
    'image/pjpeg' => 'JPEG',
    'image/jpeg' => 'JPEG',
    'image/gif' => 'GIF',
    'image/bmp' => 'WBMP',
    'image/x-png' => 'PNG'
);

if (isset($_POST["pris"]))
{
    $photos_uploaded = $_FILES['fil'];
    $photo_titel = $_POST["titel"];
    $photo_pris = $_POST["pris"];

    mysql_query( "INSERT INTO gallery_photos(`photo_filename`, `photo_caption`, `photo_price`) VALUES('0', '".addslashes($photo_titel)."', '".addslashes($photo_pris)."')" );

  $new_id = mysql_insert_id();
  $filetype = $photos_uploaded['type'];
    $extention = $known_photo_types[$filetype];
    $filename = $new_id.".".$extention;

    mysql_query( "UPDATE gallery_photos SET photo_filename='".addslashes($filename)."' WHERE photo_id='".addslashes($new_id)."'" );

    copy($photos_uploaded['tmp_name'], $images_dir."/".$filename);

    $size = GetImageSize( $images_dir."/".$filename );
    if($size[0] > $size[1])
    {
        $thumbnail_width = 200;
        $thumbnail_height = (int)(200 * $size[1] / $size[0]);
    }
    else
    {
        $thumbnail_width = (int)(200 * $size[0] / $size[1]);
        $thumbnail_height = 200;
    }

  $img = imagecreatefromjpeg($images_dir."/".$filename);

    $destination_handle = ImageCreatetruecolor ( $thumbnail_width, $thumbnail_height );

    ImageCopyResized( $destination_handle, $img, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $size[0], $size[1] );

    $img = $destination_handle;

    header('Content-Type: ' . $filetype);
    imagejpeg($img,"", 100);
    imagedestroy($img);
}
else
{
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1250">
    <meta name="generator" content="PSPad editor, www.pspad.com">
    <title></title>
    </head>
    <body>
    <form method="post" ENCTYPE="multipart/form-data" action="index.php">

      <input type="file" name="fil">
      <input type="text" value="titel1" name="titel">
      <input type="text" value="pris1" name="pris">
      <input type="submit" value="Send">

    </form>
    </body>
    </html>
<?
}
?>
Avatar billede madiedk Nybegynder
28. februar 2007 - 21:03 #4
tak, men den siger:

Warning: Cannot modify header information - headers already sent by (output started at C:\webside\upload.php:2) in C:\webside\upload.php on line 58


og istedet for billedet kommer der bare en hel side med underlige tegn
Avatar billede jakobdo Ekspert
28. februar 2007 - 21:06 #5
Hvad er linie 2 i upload.php?
Det ser ud til det er include("config.inc.php");
Har du noget output fra den?
Avatar billede madiedk Nybegynder
28. februar 2007 - 21:18 #6
nu virker det, fandt ud af at det var fordi at filen starede på linie 2, den virker åbenbart kun hvis den starter på linie 1. har aldrig troede det betød noget, men nu virker det. svar så får du point
Avatar billede madiedk Nybegynder
28. februar 2007 - 21:29 #7
sidste spørgsmål:

når jeg ændre den her kodestump:

header('Content-Type: ' . $filetype);
    imagejpeg($img,"", 100);
    imagedestroy($img);



til den her:

header('Content-Type: ' . $filetype);
    imagejpeg($img,$images_dir. "/tb".$filename, 100);
    imagedestroy($img);

hvorfor bliver billedet så ikke vist?
Avatar billede jakobdo Ekspert
28. februar 2007 - 21:34 #8
Fordi så gemmer den billedet i stedet!
Du kan måske gøre det ved efterfølgende at kalde:

header('Content-Type: ' . $filetype);
    imagejpeg($img,$images_dir. "/tb".$filename, 100);
    imagejpeg($img,"", 100);
    imagedestroy($img);
Avatar billede jakobdo Ekspert
28. februar 2007 - 21:34 #9
Og et svar!
Avatar billede madiedk Nybegynder
28. februar 2007 - 21:34 #10
det kan godt være jeg ikke har forstået funktionen måske. men det jeg gerne vil have er at, man vælger billedet man uploader og så bliver billedet gemt i en mappe og der bliver lavet et thumbnail der bliver gemt i samme mappe bare med "tb" foran i filnavnet. og så at billet bliver vist som thumbnail så man kan se hvilket billet man har uploadet
Avatar billede madiedk Nybegynder
28. februar 2007 - 21:36 #11
det virker tak
Avatar billede jakobdo Ekspert
28. februar 2007 - 21:36 #12
original billedet gemmer du med koden: copy() højere oppe.
Overveje evt. at brug: move_uploaded_file()
Avatar billede jakobdo Ekspert
28. februar 2007 - 21:45 #13
Jeg takker for point.
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