Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL][GD] Błąd przy wyświetlaniu obrazka
Forum PHP.pl > Forum > Przedszkole
The
Witam serdecznie,

mam problem ze swoim skryptem. Chciałbym napisać uploader'a obrazków. Problem jest taki, że gdy includuje plik z funkcjami, łączę się z MySQL, pobieram adres obrazka z bazy, skaluję obrazek za pomocą biblioteki GD, wysyłam odpowiedni obrazek nic nie otrzymuję, jednak gdy usunę Header(... ...) ze skryptu krzaczki są widoczne. Zauważyłem, że gdy zapiszę pustą stronę na dysk, a następnie ją otworze np. notatnikiem otrzymuje:

Kod
<b>Warning</b>:  imagejpeg(): supplied argument is not a valid Image resource in <b>/home/the/public_html/photer/function.php</b> on line <b>100</b><br />


Problem zanika, gdy w jednym pliku umieszczę konfigurację MySQL i funkcję łączenia z bazą. Plik mający za zadanie wyświetlić i zeskalować obrazek:

Kod
<?php
  ob_start();
  include('function.php');
  
  SQLConnect();
  
  $x_scale = 500;

  ImageResizer(GetFilenameFromMySQL(), 'show', $x_scale);

  SQLDisconnect();

  ob_end_flush();
?>


Użyte funkcje z pliku function.php:
Kod
  function SQLConnect($dbname = DB_NAME, $dbhost = DB_HOST, $dbuser = DB_USERNAME, $dbpass = DB_PASSWORD)
  {
    $baza = mysql_connect($dbhost, $dbuser, $dbpass);
    if(!$baza) {
      return false;
      include('error.php?error=mysql_error');
    } else {
      mysql_select_db($dbname);
      return true;
    }
  }
  
  function SQLDisconnect() {
    mysql_close();
  }
  
  function GetFilenameFromMySQL() {
    $sql = 'SELECT name FROM '.DB_TABLE.' WHERE hash="'.$_GET['z'].'"';
    $pytanie = mysql_query($sql);
    $row = mysql_fetch_assoc($pytanie);
    $imgname = $row['name'];
    return $imgname;
  }
  
  function getImage($imgname)
  {
    $ext = substr($imgname, strlen($imgname) - 3, 3);
    $ext = strtolower($ext);
    if($ext == 'jpg') {
      $img = imagecreatefromjpeg($imgname);
      $GLOBALS['img_type'] = IMG_JPEG;
    }
    else if($ext == 'gif') {
      $img = imagecreatefromgif($imgname);
      $GLOBALS['img_type'] = IMG_GIF;
    }
    else if($ext == 'png') {
      $img = imagecreatefrompng($imgname);
      $GLOBALS['img_type'] = IMG_PNG;
    }
    else {
      $img = null;
      $GLOBALS['img_type'] = null;
    }
    return $img;
  }
  
  function SaveImage($img, $imgname) {
    switch($GLOBALS['img_type']) {
      case IMG_JPEG:
        $imagejpeg($img, $imgname);
        break;
      case IMG_GIF:
        imagegif($img, $imgname);
        break;
      case IMG_PNG:
        imagepng($img, $imgname);
        break;
    }
  }
  
  function ShowImage($img) {
    switch($GLOBALS['img_type']) {
      case IMG_JPEG:
        header('Content-type: image/jpeg');
        imagejpeg($img);
        ImageDestroy($img);
        break;
      case IMG_GIF:
        header('Content-type: image/gif');
        imagegif($img);
        break;
      case IMG_PNG:
        header('Content-type: image/png');
        imagepng($img);
        break;
    }
  }
  
  function ImageResizer($imgname, $function, $new_width = 0) {
    if(!($img = getImage($imgname))) {
      include('error.php?msg=file_error');
      exit;
   }
  
   if($new_width = 0) {
  
     $img_w = imagesx($img);
     $img_h = imagesy($img);
     $ratio = $img_w / $img_h;
  
     if($ratio > 1) {
       $new_img_w = $new_width;
       $new_img_h = ($new_width / $ratio);
     } else {
       $new_img_w = ($new_width * $ratio);
       $new_img_h = $new_width;
     }
  
     $tempImg = imagecreatetruecolor($new_img_w, $new_img_h);
     imagecopyresized($tempImg, $img, 0, 0, 0, 0, $new_img_w, $new_img_h, $img_w, $img_h);
  
  }
  
  if($function == 'show')
    ShowImage($tempImg, $imgname);
  elseif($function == 'save')
    SaveImage($tempImg, $imgname);

  }


Serwer obsługuje GD, adres obrazka na pewno jest pobierany z bazy. Byłbym wdzięczny za pomoc smile.gif. Pozdrawiam
erix
A co jest w tej 100. linijce?
The
W 100. linijce znajduje się funkcja odpowiedzialna za "skompilowanie" obrazka:

  1. imagejpeg($img);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.