Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. 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í.
Avatar
Majkel
Člen
Avatar
Majkel:20.5.2015 17:28

Ahoj, ukládám obrázky do SQL jako byte[]. Obrázky jsou součástí informací o uživatelích. Teď bych ale potřeboval ty obrázky zobrazit a nevím, jak k to v razor enginu udělat.

 
Odpovědět
20.5.2015 17:28
Avatar
Odpovídá na Majkel
Michal Štěpánek:20.5.2015 21:05

Nevím, jak se toto má dělat správně, ale já jsem do databáze ukládal pouze název obrázku a cestu k němu, případně nějakou vazbu na nějakou osobu (která k tomu obrázku patří) a obrázky samotné jsem měl vždycky uložené v nějaké složce. Při výpisu jsem se pouze odkazoval do konkrétní složky podle výběru konkrétní položky z DB.

Nahoru Odpovědět
20.5.2015 21:05
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Majkel
Jan Vargovský:20.5.2015 21:29

Napiš si k modelu (nebo ViewModelu) další vlastnost, který ti inicializuje.

private Image image;
public Image Image
{
get
{
 if(image == null)
{
MemoryStream ms = new MemoryStream(array);
image = Image.FromStream(ms);
}
return image;
}
}
 
Nahoru Odpovědět
20.5.2015 21:29
Avatar
Majkel
Člen
Avatar
Odpovídá na Jan Vargovský
Majkel:21.5.2015 15:21

Napsal jsem medotu:

public Image GetImg(byte[] imgStream)
        {
            MemoryStream ms = new MemoryStream(imgStream);
            Image = Image.FromStream(ms);
            return Image;
        }

Následně v Index.cshtml:

<td>
                @{
                 CDWA.Models.GetImage getImage = new CDWA.Models.GetImage();
                 var moje = getImage.GetImg(item.Picture);
                }
                <img src="@moje" alt="Image" />
            </td>
Editováno 21.5.2015 15:21
 
Nahoru Odpovědět
21.5.2015 15:21
Avatar
JMS
Člen
Avatar
Odpovídá na Majkel
JMS:21.5.2015 16:02

Nefunguje ti to, protože do atributu src neukládáš URL obrázku.
Lepší způsob je uložit si obrázek na server a vrátit si jeho URL, kterou uložíš do databáze s názvem obrázku atd. Potom si ji jednoduše vytáhneš a naplníš s ním atribut src :-)

 
Nahoru Odpovědět
21.5.2015 16:02
Avatar
Majkel
Člen
Avatar
Odpovídá na JMS
Majkel:21.5.2015 16:49

Já to musím právě vyřešit přes tu databázi.

 
Nahoru Odpovědět
21.5.2015 16:49
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Majkel
Jan Vargovský:21.5.2015 17:20

Sorry, tak jsem googlil trošku dále než na první odkaz :D zkus tohle:

public byte[] Image {get;set;}

private string imagePath;
 public string ImagePath
 {
 get
 {
  if(imagePath == null && Image != null)
 {
   imagePath = "data:image/png;base64," + Convert.ToBase64String(Image, 0, Image.Length);
 }
 return imagePath;
 }
 }
Editováno 21.5.2015 17:20
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
21.5.2015 17:20
Avatar
Majkel
Člen
Avatar
Odpovídá na Jan Vargovský
Majkel:21.5.2015 19:07

Nakonec jsem to vyřešil takto. Díky všem za tipy a rady :-)

<td>
               <img src="data:image/jpg;base64,@Convert.ToBase64String(item.Picture,0,item.Picture.Length ,
         Base64FormattingOptions.None)"
              alt="Image" width="100" height="100" />

           </td>
 
Nahoru Odpovědět
21.5.2015 19:07
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 8 zpráv z 8.