Zmenšování obrázků pomocí třídy Image\Nette
- KillPrd
- Začátečník | 110
Ahojte rád bych udělal velmi jednoduchou galerii a nějakým zpusobem bych chtěl zmenšit obrázky pro náhledy.
snařil jsem se to řešit následovně pomocí třídy Image:
$idecka = $this->model->findAllTodoss("[id]","[galerie]","[s_inzerce] = '".$this->params['id']."'");
foreach($idecka as $id)
{
$image = Image::fromFile(WWW_DIR.'files/file/'.$id.'.dat');
$image->resize(150, 100);
$image->send();
$this->template->images = $image;
}
}
Ale asi jsem trošku nepochopil jak se to má přesně dělat.
Vím že mi chybí uložení obrázku ale na to už jsem asi krátkej tak bych
prosil o velmi jednoduché vysvětlení nebo ukázku nebo upravu tohoto kodu
moc děkuji…
- Daniel Kessl
- Člen | 6
K uložení obrázku slouží metoda
$image->save($filename = null, $quality = null, $type = null)
,
přesně jak je popsáno v dokumentaci.
$image->send()
obrázek pošle na výstup.
- KillPrd
- Začátečník | 110
Daniel Kessl napsal(a):
K uložení obrázku slouží metoda
$image->save($filename = null, $quality = null, $type = null)
, přesně jak je popsáno v dokumentaci.$image->send()
obrázek pošle na výstup.
To je hezke ale asi to neni dostatečne popsane protoze stale nevim jak t opouzit v presenteru a jak v sablone
- Daniel Kessl
- Člen | 6
Presenter
<?php
foreach ($ids as $id) {
$image = Image::fromFile('nekde/' . $id . '.typ');
$image->resize(150, 100);
$image->save($path = 'nekde/' . $id . '.thumbnail.typ');
$this->template->images[] = $path;
}
?>
Šablona
{foreach $images as $image}
<img src="{$image}" />
{/foreach}
Stačí?
- KillPrd
- Začátečník | 110
To je naprosto super moc dekuji ted aspon znám princip.A abych se přiznal
v této fázy jsem také již byl ale nefunguje to chybová hláška
je:Object of class Todo could not be converted to string
evidentně mu vadí tato část kodu
$image = Image::fromFile('files/file/' . $id . '.jpg');
- KillPrd
- Začátečník | 110
<?php
$items = $this->model->findAllTodos($order = array(
'id' => 'ASC',
), $where = array(
'id' => $this->params['id'],
), $offset = NULL, $limit = NULL
,$tabulky = 'galerie');
foreach ($items as $ide) {
$file = 'files/file/' . $ide . '.jpg';
$image = Image::fromFile($file);
$image->resize(150, 100);
$safeFile = 'files/file/' . $ide . '.thumbnail.jpg';
$image->save($path = $safeFile);
$this->template->images[] = $path;
}
<?
šablona
{foreach $images as $img}
<div class="img">
<a href="3" rel="lightbox" target="_blank">
<img src="{$basePath}/{$img}" />
</a>
</div>
{/foreach}
- Daniel Kessl
- Člen | 6
Nepomohlo by to pole ještě před foreach
cyklem inicializovat?
($this->template->images = array();
)
- Daniel Kessl
- Člen | 6
Btw, k čemu ti je proměnná $safeFile
? Dej to rovnou do $path
a máš o proměnnou míň.
- KillPrd
- Začátečník | 110
Aktuálně:
<?php
$items = $this->model->findAllTodos($order = array(
'id' => 'ASC',
), $where = array(
'id' => $this->params['id'],
), $offset = NULL, $limit = NULL
,$tabulky = 'galerie');
foreach ($items as $ide) {
$image = Image::fromFile(WWW_DIR.'/files/file/' . $ide . '.dat');
$image->resize(150, 100);
$image->save($path = WWW_DIR.'/files/file/' . $ide . '.thumbnail.jpg');
$this->template->images[] =$path;
}
?>
a stále stejná chybová hláška.Undefined variable: images
- KillPrd
- Začátečník | 110
problem je v dotazu který používám díky tomu se neplní pole ted už jen správně udělat dotaz… Děkuji všm za trpělivost a podporu
posledni funkční kod
<?php
$obra = array();
foreach ($items as $ide) {
$path = WWW_DIR.'/files/file/' .$ide . '.thumbnail.jpg';
$image = Image::fromFile(WWW_DIR.'/files/file/' . $ide . '.dat');
$image->resize(150, 100);
$image->save($path);
$obra[] =$path;
}
$this->template->images = $obra;
?>