Autor Zpráva
KOKOSSAK
Profil *
Dobrý den. Pomocí uploaderu http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/ nahrávám obrázky do úrčitých složek na ftp. V galerii je následně zobrazuju. Při ručním uploaderu - přímo na FTP nemám problém, ovšem při použití uploaderu to z nějakého důvodu nevytvoří miniatury a vypíše to chyby.

http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/

Warning: imagesx() expects parameter 1 to be resource, null given in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 49

Warning: Division by zero in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 63

Warning: imagesy() expects parameter 1 to be resource, null given in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 53

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 75

Warning: imagesx() expects parameter 1 to be resource, null given in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 49

Warning: imagesy() expects parameter 1 to be resource, null given in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 53

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 76

Warning: imagejpeg() expects parameter 1 to be resource, boolean given in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 25

Warning: imagesx() expects parameter 1 to be resource, null given in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 49

Warning: Division by zero in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 63

Warning: imagesy() expects parameter 1 to be resource, null given in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 53

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 75

Warning: imagesx() expects parameter 1 to be resource, null given in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 49

Warning: imagesy() expects parameter 1 to be resource, null given in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 53

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 76

Warning: imagejpeg() expects parameter 1 to be resource, boolean given in


Má funkce na vytvoření miniatur:

<?php
class imageResize {
 
   var $image;
   var $image_type;
 
   function load($filename) {
 
      $image_info = getimagesize($filename);
      $this->image_type = $image_info[2];
      if( $this->image_type == IMAGETYPE_JPEG ) {
 
         $this->image = imagecreatefromjpeg($filename);
      } elseif( $this->image_type == IMAGETYPE_GIF ) {
 
         $this->image = imagecreatefromgif($filename);
      } elseif( $this->image_type == IMAGETYPE_PNG ) {
 
         $this->image = imagecreatefrompng($filename);
      }
   }
   function save($filename, $image_type=IMAGETYPE_JPEG, $compression=100, $permissions=null) {
 
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image,$filename,$compression);
      } elseif( $image_type == IMAGETYPE_GIF ) {
 
         imagegif($this->image,$filename);
      } elseif( $image_type == IMAGETYPE_PNG ) {
         imagepng($this->image,$filename);
      }
      if( $permissions != null) {
         chmod($filename,$permissions);
      }
   }
   function output($image_type=IMAGETYPE_JPEG) {
 
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image);
      } elseif( $image_type == IMAGETYPE_GIF ) {
 
         imagegif($this->image);
      } elseif( $image_type == IMAGETYPE_PNG ) {
         imagepng($this->image);
      }
   }
   function getWidth() {
 
      return imagesx($this->image);
   }
   function getHeight() {
 
      return imagesy($this->image);
   }
   function resizeToHeight($height) {
 
      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
   }
 
   function resizeToWidth($width) {
      $ratio = $width / $this->getWidth();
      $height = $this->getheight() * $ratio;
      $this->resize($width,$height);
   }
 
   function scale($scale) {
      $width = $this->getWidth() * $scale/100;
      $height = $this->getheight() * $scale/100;
      $this->resize($width,$height);
   }
 
   function resize($width,$height) {
      $new_image = imagecreatetruecolor($width, $height);
      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
      $this->image = $new_image;
   }      
 
}

class galleryThumbs {

    private $directory;
    private $folderScan;
    private $thumbsWidth = 150;

    function __construct($dir) {
        if(!is_dir($dir)) {
            die("Error: folder does not exist!");
        }
        $this->directory = $dir;
        $this->folderScan = scandir($this->directory);
        unset($this->folderScan[0]);
        unset($this->folderScan[1]);
    }

    private function getImages($folder) {
        $images = scandir($folder);
        foreach($images as $key => $file) {
            if($file == "thumbs") {
                unset($images[$key]);
            }
        }
        unset($images[0]);
        unset($images[1]);
        return $images;
    }

    private function getThumbs($folder) {
        $images = scandir($folder);
        unset($images[0]);
        unset($images[1]);
        return $images;
    }

    private function generateThumbs($imageFolder, $filename) {
        if(file_exists($imageFolder.$filename)) {
            $resize = new imageResize;
            $resize->load($imageFolder.$filename);
            $resize->resizeToWidth($this->thumbsWidth);
            $resize->save($imageFolder."thumbs/".$filename);
        }
    }

    public function generate() {
        foreach($this->folderScan as $folder) {
            $images = self::getImages($this->directory."/".$folder);
            $thumbs = self::getImages($this->directory."/".$folder."/thumbs/");
            foreach($images as $image) {
                if(!in_array($image, $thumbs)) {
                    self::generateThumbs($this->directory."/".$folder."/",$image);
                }
            }
        }
    }
}


$thumbs = new galleryThumbs("actions");
$thumbs->generate();

?>


V případě, že by se někomu podařilo najít problém a zároveň by dokázal přidat k uploaderu zmenšení obrázku na straně klienta -> Finančně se odměním.
Nedávám do to práci a zakázek, protože se možná najde někdo, kdo poradí jen tak alespoň nějakou část, jak se dopracovat do zdárného výsledku.

Předem děkuji.
Sir Tom
Profil
KOKOSSAK:
Warning: imagesx() expects parameter 1 to be resource, null given in /data/web/virtuals/51040/virtual/www/domains/brouccivalmez.cz/includes/actions.php on line 49
Tato chyba říká:
Varování: Funkce imagesx() očekává první parametr zdroj obrázku, ale získala nic. Podle kódu, na který chyba upozorňuje, to znamená, že $this->image je prázdné. $this->image by mělo získat hodnotu ve funkci load(). Mrkni se do té fce load a zjisti, jestli opravdu $this->image má pak nějakou hodnotu.

Myslím, že ve složce, nejsou všechny soubory (obrázky) se správnou příponou...
KOKOSSAK
Profil *
Aha, dobře .. Ale jak by to vyřešilo problém, že to při uploadu přes FTP klienta funguje, ale přes uploader nikoliv? Ten uploader přece nemění příponu, nebo se mýlím?
Sir Tom
Profil
KOKOSSAK:
Nevím, třeba na FTP tento uploader nenajde žádný obrázek. Nebo nemá přístup do složky (nemá na to práva). Nebo se dívá do jiné složky než by měl...
KOKOSSAK
Profil *
Možná se špatně chápeme. Ten Uploader tahá fotografie od KLIENTA na FTP, né z FTP .. takže práva či najít obrázek na PC .. to přece nemůže být problém, ne?
Davex
Profil
Ono to vypadá, že skript galerie vůbec nepočítá s tím, že se nepodaří fotografie přečíst.

Nenastavuje Uploader nahraným souborům nedostatečná práva nebo nejsou nahrané fotografie poškozené?
peta
Profil
viz [#2] Sir Tom
"Warning: imagesx() expects parameter 1 to be resource, null given"
Funkce ocekava prvni parametr resource, dostala null.
Na radku 47-49 mas
   function getWidth() {
      return imagesx($this->image);
To znamena, ze v $this->image nejsou obrazkova data, a tudiz selhala funkce, ktera je tam mela nahrat. Data tam nahrava podle kodu jen funkce load($filename).
$this->image = imagecreatefromjpeg($filename);
Ale v kodu nevidim nikde osetreni ani na fileexists, ani if (!$this->image) {return;} a ani na to, zda mas prava cist z adresare (na linuxu byvaji prava 0755 slozka, 0644 soubory, nebo mensi, ktere mas asi ty). Mozna by si to chtelo udelat na radku 94, 95 nebo 96, abys videl, jake soubory to nacetlo ( scandir krom souboru nacte take slozky a kdyz predas jmeno slozky do filename, tak cela ta funkce load selze).
echo '<pre>'; print_r($this->folderScan);
Ale to jen popisuji to, co uz ti napsali jini, treba to pochopis. Jakym zpusobem nahravas data, zda pres ftp nebo web-formular je v celku jedno, protoze funkce scandir() provadi nacitani adresare na serveru, pokud ma opravneni z neho cist, nezajima ji, kdo to tam nahral.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: