Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akce až 50 % zdarma při nákupu e-learningu. Více informací:
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Slevovy týden 3/50
Avatar
Vaclav Hrouda:29.4.2018 17:48

Můj cíl je nahrát do jedné složky obrázek v maximální velikosti 1024x768 a jeho náhled o max velikosti 400x400. Obě metody níže dostávají stejný obrázek a mají ho za úkol nahrát a zmenšit na požadovanou velikost. První fotka se nahraje a zmenší bez problému, ale druhá už se nenahraje. Budu rád za jakoukoli radu. Děkuji.

$spravceFotek->nahrajObrazek($obrazek, 'tn_', $poradi, 400, 400, $slozka);

$spravceFotek->nahrajObrazek($obrazek, 'big_', $poradi, 1024, 768, $slozka);

Tělo funkce:

public function nahrajObrazek($obrazek, $prefix, $poradi, $width, $height, $slozka)
      {
        $image = new Bulletproof\Image($obrazek);

        if ($image["pictures"]) {
          $image->setLocation('image/' . $slozka)
          ->setName($prefix . $slozka . $poradi)
          ->setSize(0, 2000000);

          $upload = $image->upload();

          $velikost = $this->getImageSizeKeepAspectRatio('image/' . $slozka . '/' . $prefix . $slozka . $poradi . '.' . $image->getMime(), $width, $height);


          if($upload){
            $resize = Bulletproof\resize(
              $image->getFullPath(),
              $image->getMime(),
              $image->getWidth(),
              $image->getHeight(),
              $velikost['width'],
              $velikost['height']
            );
          }
      }
    }

https://github.com/…/bulletproof

 
Odpovědět
29.4.2018 17:48
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:2.5.2018 16:11

Aspon, ze jsi dal link.

Nepochopil jsi, co ten kod dela.
Uploaduje obrazek. Pak jej zmensuje.
Nemuzes 2x uploadovat obrazek!!! ten soubor se z temp/ adresare po ukonceni uploadu smaze.
Radek 358, viz link dole na git, moveUploadedFile
Z dokumentace funkce (php.net/move­UploadedFile) zjistis, ze z puvodniho umisteni (temp/xyz) ho presunuje pryc do tvujweb/image/neco. Takze tu funkci nelze volat 2x po sobe.

Tak si tam udelej vlastni funkci, kde bude tentyz kod, plus podruhe

$velikost = $this->getImageSizeKeepAspectRatio('image/' . $slozka . '/' . $prefix . $slozka . $poradi . '.' . $image->getMime(), $width, $height); // prepocita rozmery

  $resize = Bulletproof\resize( // zmensi
    $image->getFullPath(),
    $image->getMime(),
    $image->getWidth(),
    $image->getHeight(),
    $velikost['width'],
    $velikost['height']
https://github.com/samayo/bulletproof/blob/master/src/utils/func.image-resize.php

imagejpeg se da vyhledat v dokumentaci
php.net/imagejpeg
bool imagejpeg ( resource $image [, mixed $to [, int $quality ]] )
imagejpeg($im, 'simpletext.jpg'); // idealne v examplu, prvni je obrazkova_dat, druhy cesta

Cili, musis te druhe funkci resize dat jen spravnou cestu. Nevim, ktera to bude. Bud
$image->getFullPath(), nebo
'image/' . $slozka . '/' . $prefix . $slozka . $poradi . '.' . $image->getMime()

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
2.5.2018 16:11
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.