Zobrazení obrázku z databáze

Allconius
Člen | 313
+
0
-

Ahoj, jak dostanu do šablony obrázek z databáze ?
Mám v šabloně:

<?php
<img src="{$post->id|foto:''|dataStream}">
?>

Ten filtr „foto“ zavolá funkci:

<?php

    public function Obr($idobr)
    {
        if (is_numeric($idobr)) {

            $result = $this->database->table($this->tabulkahsoubory)
                ->where(''.$this->tabulkahsoubory.'.id = ?', $idobr);

                foreach ($result as $id => $row) {
                    $telo = $row->foto;
                }

            $image = Image::fromFile($telo);
            $image->resize(150, null);
            //$image->send(Image::JPEG);
            return $image;
        }

    }

?>

Akorát to Image::fromFile funguje jen na obrázek z URL, když tam dám ten obsah z DB tak to hlásí „TypeError: is_file() expects parameter 1 to be a valid path, string given“

Allconius
Člen | 313
+
-1
-

Allconius napsal(a):

Ahoj, jak dostanu do šablony obrázek z databáze ?
Mám v šabloně:

<?php
<img src="{$post->id|foto:''|dataStream}">
?>

Ten filtr „foto“ zavolá funkci:

<?php

    public function Obr($idobr)
    {
        if (is_numeric($idobr)) {

            $result = $this->database->table($this->tabulkahsoubory)
                ->where(''.$this->tabulkahsoubory.'.id = ?', $idobr);

                foreach ($result as $id => $row) {
                    $telo = $row->foto;
                }

            $image = Image::fromFile($telo);
            $image->resize(150, null);
            //$image->send(Image::JPEG);
            return $image;
        }

    }

?>

Akorát to Image::fromFile funguje jen na obrázek z URL, když tam dám ten obsah z DB tak to hlásí „TypeError: is_file() expects parameter 1 to be a valid path, string given“

aha tak funguje Image::fromString :-)

Polki
Člen | 553
+
+1
-

Ty ukládáš celý obrázek jako řetězec do databáze?

Kamil Valenta
Člen | 758
+
+3
-

Protože je hodně důvodů, proč to nedělat… a snad skoro žádný, proč to dělat.

  • posíláš prohlížeči hlavičky, aby si obrázek cachoval?
  • kolik těch obrázků v DB bude? odhadneš jak bude tabulka velká? víš, že se bude zdlouhavě zálohovat a v případě problémů zdlouhavě dělat restore? nenarazíš na limity DB?
  • není lepší ten resize udělat „jednou“ a nezatěžovat server při každém požadavku na ten obrázek?

Opravdu dobře zvaž, zda nechceš obrázky sypat na disk a do DB si poznačit jen filename…