Back to top

Autore Topic: [RISOLTO]visualizzare immagini da blob 2  (Letto 5724 volte)

Offline Cybassh

  • Esploratore
  • **
  • Post: 105
    • Mostra profilo
[RISOLTO]visualizzare immagini da blob 2
« il: 24 Nov 2010, 12:20:40 »
Salve,
  ho un problema nel visualizzare immagini da un db nel mio componente all'interno fra i contenuti delle viste.
in primis, data una vista primo, ho aggiunto nel modello primo il metodo
Codice: [Seleziona]
class DocentiModelHome extends JModel
                     ...
                     public function VisuaFoto($foto){
$document =& JFactory::getDocument();
$document->setMimeEncoding('image/jpeg');
header('Content-type: image/jpeg');
//echo del contenuto del campo blob
echo $foto;
//exit;
return;
    }
e nella vista primo ho messo
Codice: [Seleziona]
$i=$arr_foto[0][blobdata];
//$session->set('foto',$id_anagrafica);
//$path=JPATH_COMPONENT.DS."include/";
//echo "<pre>";
//var_dump($i);
$model->VisuaFoto($i);

il risultato è che mi scrive così:
Citazione
http://localhost/Docenti/index.php/docenti?view=home&id_anagrafica=1323
e sul titolo della scheda in firefox:
nomecomponente(Immagine JPEG)

Dov'è che sbaglio? con il debug son entrato nel metodo ed il passaggio di valore sembra corretto.

Andrea
« Ultima modifica: 09 Dic 2010, 15:22:15 da Cybassh »

mau_develop

  • Visitatore
Re:visualizzare immagini da blob 2
« Risposta #1 il: 24 Nov 2010, 14:11:19 »
mi verrebbero un po di domande

MVC ... te parli di MV ..e C?

public function
-----------------------
function va bene ... public toglilo pure

VisuaFoto($foto)
------------------------
vuol dire che gli passi $foto... dov'è?

  echo $foto;
--------------------------
... un echo nel model nn serve, serve il return e il print lo fai nel controller dove dovresti istanziare model e view passando a view i dati che recuperi nel model.

e nella vista primo ho messo
---------------------------------------
immagino ti riferisca al default del template e non alla view, poichè non vedo classi e funzioni

$model->VisuaFoto($i);
---------------------------------
questo non si fa ne nella view ne nel template ma nel controller in un ipotetico metodo visualizza foto che prende i dati dal model e li passa alla view il cui template visualizzerà

$i=$arr_foto[0][blobdata];
-------------------------------------
... da dove viene $arr_foto[0] ?

M.

Offline Cybassh

  • Esploratore
  • **
  • Post: 105
    • Mostra profilo
Re:visualizzare immagini da blob 2
« Risposta #2 il: 02 Dic 2010, 12:18:02 »
scusa il ritardo ma son stato occupato
  Allora, mi  spiego meglio:

cercando di stare in  un'ottica mvc:

nel controller principale, visto che son dati comuni  nel componente, prendo l'array relativo alla foto $fotocomprensivo di ext per eventuale mime e il blob
Codice: [Seleziona]
... {puntini stanno per seri di istruzioni}
$model=$controller->getmodel();
...
$foto=$model->daiFoto($id_anagrafica);
...
$ris_foto=$session->set('foto',$foto);
...
JRequest::setVar('view','home');

in com_xxxxx->views->home->view.html.php setto
Codice: [Seleziona]
...
$foto=$session->get('foto',null);
...
$this->assignRef('foto', $foto);

ed infine su  com_xxxxx->views->home->tmpl->default.php ottengo l'array famosa contenente il blob
Codice: [Seleziona]
...$foto=$this->foto;
...
$i=$foto[0][blobdata]; //$i contiene il blob dell'immagine

ora come si puo' visualizzare l'imagine contenuta nel blob?

Offline Cybassh

  • Esploratore
  • **
  • Post: 105
    • Mostra profilo
Re:visualizzare immagini da blob 2
« Risposta #3 il: 03 Dic 2010, 11:04:40 »
Citazione
public function
-----------------------
function va bene ... public toglilo pure

diamogli una parvenza di programmazione ad oggetti hehehe

mau_develop

  • Visitatore
Re:visualizzare immagini da blob 2
« Risposta #4 il: 03 Dic 2010, 14:50:57 »
cosa fa questa?

$model=$controller->getmodel();

M.

Offline Cybassh

  • Esploratore
  • **
  • Post: 105
    • Mostra profilo
Re:visualizzare immagini da blob 2
« Risposta #5 il: 06 Dic 2010, 09:55:08 »
fa riferimento all'istanza del model principale (ComponenteModelsComponente).
questo per caricare ed elaborare alcuni dati  comuni a tutte le viste del componente

mau_develop

  • Visitatore
Re:visualizzare immagini da blob 2
« Risposta #6 il: 06 Dic 2010, 11:36:21 »
si ma non ho capito $controller da dove viene, perchè dovrebbe avere quel metodo getModel(), perchè quel metodo getModel non ha argomenti ... http://docs.joomla.org/API16:JController/getModel

M.

Offline Cybassh

  • Esploratore
  • **
  • Post: 105
    • Mostra profilo
Re:visualizzare immagini da blob 2
« Risposta #7 il: 06 Dic 2010, 12:43:41 »
mmmm questo presuppone che abbia sbagliato qualcosa immagino

siamo nella pagina  componente.php nella root del compoonente
$controller è l'istanza del controller principale
da cui chiamo lì'istanza del modello  ($model  ) principale per chiamare alcuni metodi.
l'ho chiamata senza parametri perchè mi da automaticamente il modello principale.

per tornare alle immagini, credo poi si possa utilizzare :
Codice: [Seleziona]
<img  src="stream.php?tipo=<?php echo $ext;?>" alt="Foto personale"/>no?
il problema ce l'ho anche nel trovare il path corretto.
la struttura componente è:
com_ccomponente
|_>models
!_>controllers
|_>views
|_>include
controller.php
componente.php

che path gli dovrei dare?

grazie

mau_develop

  • Visitatore
Re:visualizzare immagini da blob 2
« Risposta #8 il: 06 Dic 2010, 13:03:40 »
il controller "gestisce" le task, nessuna task = task default

la task non è ne più ne meno di un metodo del controller che si occuperà di scegliere (istanziare) un model $miomodel=getModel(nome_model);

usarne un metodo $mieidati = $miomodel->faiQualcosa();

passare alla view questi dati con un assign dopo aver scelto una view e il suo formato di dati getView(nome, formato).

M.

Offline Cybassh

  • Esploratore
  • **
  • Post: 105
    • Mostra profilo
Re:visualizzare immagini da blob 2
« Risposta #9 il: 06 Dic 2010, 13:20:34 »
ok,
  il blob lo passo alla view. ma mi visualizza i caratteri del blob e non l'immagine.
io pensavo di creare un file stream.php dove si settava il  mime in base all'estensione e poi fare il print del blob(magari preso dalla sessione) con  la dicitura che avevo riportato prima cioè:
Codice: [Seleziona]
<img  src="components/com_componente/include/stream.php?tipo=<?php echo $ext;?>" alt="Foto personale"/> ma non funziona...

mau_develop

  • Visitatore
Re:visualizzare immagini da blob 2
« Risposta #10 il: 06 Dic 2010, 13:39:12 »
le immagini sono memorizzate nel db? o viene memorizzato il link?

perchè lo stream... comunque non può farlo un file esterno

mi aspetto qs: task->vedi_immagine
controller:
   function vedi_immagine(){
      $model = $this->getModel('nome');
       $view =& $this->getView('visualizza_immagine', 'html');

       if($img=$model->get_mia_img()){
          $view->assign('img', $img);
                 }

       $view->setModel($model);
      $view->display();
   }

model:

function get_mia_img(){
            query al db;
            return risultato;
}

view:

$img = getVar('img');
$this->assign( 'img',   $img );

template:

$mia_immagine = $this->img;

M.

Offline Cybassh

  • Esploratore
  • **
  • Post: 105
    • Mostra profilo
Re:visualizzare immagini da blob 2
« Risposta #11 il: 06 Dic 2010, 14:45:32 »
si + o -, la tua è piu' raffinata, pero' (c'è sempre un pero')
è che devo visualizzare questa immagine all'interno di un content che ha altre informazioni tipo nome cognome struttura etc... ed ho problemi a visualizzarla.
pensavo di creare una cartella include nella root del componente, e metterci un file stram.php al quale passi la ext per il mime ed il blob dell'immagine. ma non me la cattura.
dal template scrivo  quello che avevo scritto prima(non era chiaro) ma mi restituisce il valore alt, cioe "foto personale"


non riesco a passare stream.php il blob attraverso la sessione...cioè..ovviamente. volevo cercare una soluzione...

anche poter scrivere su una cartlla temporanea le foto, associate all'id x es

« Ultima modifica: 06 Dic 2010, 15:07:17 da Cybassh »

Offline Cybassh

  • Esploratore
  • **
  • Post: 105
    • Mostra profilo
Re:visualizzare immagini da blob 2
« Risposta #12 il: 07 Dic 2010, 14:37:14 »
Aspetta un secondo,
quando sul template della view ottieni l'immagine sottoforma di blob, che faresti poi per farla visualizzare insieme ad altri contenuti?

mau_develop

  • Visitatore
Re:visualizzare immagini da blob 2
« Risposta #13 il: 07 Dic 2010, 16:37:16 »
se quel file che tu chiami stream ha una classe che manipola le gd porti la classe nel tuo componente (model)

M.

Offline Cybassh

  • Esploratore
  • **
  • Post: 105
    • Mostra profilo
Re:visualizzare immagini da blob 2
« Risposta #14 il: 09 Dic 2010, 15:21:38 »
ok. risolto cosi':
aggiunto task del controller Visuafoto()
Codice: [Seleziona]
$document =& JFactory::getDocument();
//echo del contenuto del campo blob
$id_anagrafica=JRequest::getVar('id_anagrafica');
$model = $this->getModel();
$arr_foto=$model->daiFoto($id_anagrafica);
$ext=$arr_foto[0][fileext];
$foto=$arr_foto[0][blobdata];
//echo "aio!";
//var_dump($foto);
//exit;

$document->setMimeEncoding("image/$ext");
//header("Content-type: image/$ext");

print($foto);
return;
poi nel template delle viste (essendo la foto una info comune) ho messo questa istruzione:
Codice: [Seleziona]
<img src="<?php echo JRoute::_("https://web.unipg.it/personale/index.php/docenti?format=raw&task=VisuaFoto&id_anagrafica=$id_anag"); ?>" alt="Foto personale" />
e funziona con mio sommo sbigottimento hehehehe
grazie mille (ho anche capito la differenza tra mvc e mv c ;) )

 



Web Design Bolzano Kreatif