Avatar billede decrypto Nybegynder
15. april 2005 - 13:56 Der er 125 kommentarer og
1 løsning

Hvordan binder jeg billede data til et <img>?

Til cyberfesser eller snepnet (som skulle være hajer til .NET, men andre er også velkomne til at svare) :o)

Dette er spørgsmål går helt enkelt ud på, hvordan jeg viser et billede hentet fra en database, det på en side i et <img> tag, eller hvad der nu er behov for.

Jeg har nemlig en liste af varer, hvortil der er et billede til hver vare, og de skal bare vises som en liste.

Er der nogen der kan hjælpe?
Avatar billede snepnet Nybegynder
15. april 2005 - 13:59 #1
hej decrypty :o)

du laver en lille ekstra side som fungerer som imageserver. den side kan så tage en parameter som kunne være id'et på billedet.
udfra det id hentes billedet op fra basen, og skrives til din outputstream.

på den side der skal vise billedet, sætter du bare et almindeligt billede ind, og sætter url'en til
http://<host>/<web>/ImageServer.aspx?imageid=x

jeg finder lige et eksempel frem og poster det her.

mvh
Avatar billede jokkejensen Novice
15. april 2005 - 14:01 #2
du har listen men kan ikke få billedet til at virke ?

Smid lige lidt kode..

Hvis jeg forstod dig ret, så har du listen.. og kan derved binde i din repeater, datalist eller datagrid med :

<img src='<%#DataBinder.Eval(Container.DataItem, "kolonnenavn").ToString() %>'>
Avatar billede decrypto Nybegynder
15. april 2005 - 14:07 #3
Jeg er ret tæt synes jeg. Det eneste jeg får ud på listen er:

"System.Drawing.Bitmap"

Min kode ser således ud.

Product a = new Product();
                ArrayList ProductArray = a.GetProductSearchLst(SoegStreng);
               
                DataTable dt = new DataTable();
                DataRow dr;

                dt.Columns.Add(new DataColumn("ProduktID", typeof(Int32)));
                dt.Columns.Add(new DataColumn("Navn", typeof(string)));
                dt.Columns.Add(new DataColumn("Pris", typeof(double)));
                dt.Columns.Add(new DataColumn("Billede", typeof(byte[])));
               
                foreach(ProductData p in ProductArray)
                {
                    dr = dt.NewRow();

                    dr[0] = p.ProductId.ToString();
                    dr[1] = p.ProductName.ToString();
                    dr[2] = p.ProductPrice.ToString();
                    Photo photo = new Photo();
                    dr[3] = photo.StreamPhoto(p.ProductPhoto);
                    //dr[3] = (byte[])p.ProductPhoto;
                   
                    dt.Rows.Add(dr);
                }

                productList.DataSource = dt;
                productList.DataBind();

            }
Avatar billede decrypto Nybegynder
15. april 2005 - 14:07 #4
Min photo klasse ser således ud:

    public class Photo
    {
        public Photo()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        public Bitmap StreamPhoto(byte[] PhotoData)
        {
           
            /*FileStream Photo = new FileStream();
            Photo.Write (PhotoData, 0, PhotoData.Length);
            Bitmap bitmap = new Bitmap (Photo);*/
            MemoryStream stream = new MemoryStream ();
            stream.Write (PhotoData, 0, PhotoData.Length);         
            Bitmap bitmap = new Bitmap (stream);
            //System.Web.HttpContext.Current.Response.ContentType = "image/gif"; 
            //bitmap.Save (System.Web.HttpContext.Current.Response.OutputStream, ImageFormat.Gif);
            return bitmap;
        }
    }
Avatar billede decrypto Nybegynder
15. april 2005 - 14:08 #5
Hovsa...se bort for           

/*FileStream Photo = new FileStream();
Photo.Write (PhotoData, 0, PhotoData.Length);
Bitmap bitmap = new Bitmap (Photo);*/

Var bare noget jeg prøvede med.
Avatar billede snepnet Nybegynder
15. april 2005 - 14:09 #6
her en funktion der smider billedet i din outputstream :
(jeg går ud fra at du har en eller anden form for dataadgangsystem som du så kan hente billedet i databasen fra).

// du kan bare have det i page_load
Response.ContentType = "JPG";   
Response.BinaryWrite( new DataAccess().GetImageBytes(ImageId) );

du kan så have en property til dit imageid :

protected int ImageId
{
    get{return int.Parse(Request.QueryString["ImageId"]);}
}

du kunne så have sådan en fyr på din form :
<asp:image id=someImage runat="server" ImageUrl='<%# String.Format("ImageServer.aspx?ImageId={0}", ImageId) %>'></asp:image>

du må endelig spørge hvis der er noget du er i tvivl om.

mvh
Avatar billede snepnet Nybegynder
15. april 2005 - 14:10 #7
sorry - havde ikke set din posts, men jeg kan se at du allerede har muligheden for at tage fat i dit image som bytearray, og det er så bare det array du skal klaske ud i din responsestream ud fra den model jeg skrev.
mvh
Avatar billede decrypto Nybegynder
15. april 2005 - 14:21 #8
Cööl med så fed hjælp herinde :o).....

Jeg prøver mig frem...men gå ikke for langt væk :o). Jeg vender tilbage om en time eller to.
Avatar billede snepnet Nybegynder
15. april 2005 - 14:21 #9
det siger vi bare :o)
mvh
Avatar billede decrypto Nybegynder
15. april 2005 - 14:22 #10
Jeg binder resten af data til et datagrid. Hvordan smider jeg billedet ind her?

<asp:datagrid id="productList" runat="server" AlternatingItemStyle-BackColor="lightBlue" Width="100%"
                                                    AutoGenerateColumns="false" HeaderStyle-CssClass="listHeader" HeaderStyle-Font-Bold="True"
                                                    HeaderStyle-BackColor="#6db3da" Font-Size="8pt" Font-Name="Verdana" CellSpacing="0" CellPadding="3"
                                                    GridLines="Both" BorderWidth="0">
                                                    <Columns>
                                                        <asp:HyperLinkColumn HeaderText="#" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"
                                                            HeaderStyle-Width="50" ItemStyle-Width="50" DataNavigateUrlField="ProduktID" DataNavigateUrlFormatString="produkt.aspx?id={0}"
                                                            DataTextField="Billede" Target="_self" />
                                                        <asp:HyperLinkColumn HeaderText="Navn" DataNavigateUrlField="ProduktID" DataNavigateUrlFormatString="produkt.aspx?id={0}"
                                                            DataTextField="Navn" Target="_self" />
                                                        <asp:BoundColumn HeaderText="Pris" DataField="Pris" DataFormatString="{0:c}" HeaderStyle-HorizontalAlign="Right"
                                                            ItemStyle-HorizontalAlign="right" />
                                                        <asp:HyperLinkColumn HeaderText="Indkøbskurv" Text="Tilføj" DataNavigateUrlField="ProduktID" DataNavigateUrlFormatString="indkobskurv.aspx?id={0}"
                                                            HeaderStyle-HorizontalAlign="center" ItemStyle-HorizontalAlign="center" Target="_self" />
                                                    </Columns>
                                                </asp:datagrid>
Avatar billede decrypto Nybegynder
15. april 2005 - 14:24 #11
Under det første element under <Columns> skal jeg istedet for:
<asp:HyperLinkColumn HeaderText="#" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"
HeaderStyle-Width="50" ItemStyle-Width="50" DataNavigateUrlField="ProduktID" DataNavigateUrlFormatString="produkt.aspx?id={0}" DataTextField="Billede" Target="_self" />

Have et billede ind, hvordan skriver jeg det? der er jo ikke noget der hedder:
<asp:ImageColumn .....>
Avatar billede snepnet Nybegynder
15. april 2005 - 14:24 #12
du kan bare sætte det ind med den jeg sendte før :
<asp:image id=someImage runat="server" ImageUrl='<%# String.Format("ImageServer.aspx?ImageId={0}", ImageId) %>'></asp:image>

Du skal så have en property i din datasource, hvor id'et til billedet ligger.

mvh
Avatar billede snepnet Nybegynder
15. april 2005 - 14:25 #13
(og du kan så lave det som en templatecolumn)
mvh
Avatar billede snepnet Nybegynder
15. april 2005 - 14:26 #14
<Columns>
    <asp:TemplateColumn HeaderText="Billede">
        <ItemTemplate>
            <asp:image id=someImage runat="server" ImageUrl='<%# String.Format("ImageServer.aspx?ImageId={0}", ImageId) %>'></asp:image>
        </ItemTemplate>
    </asp:TemplateColumn>
</Columns>

mvh
Avatar billede decrypto Nybegynder
15. april 2005 - 14:29 #15
Oki doki prøver mig frem....
Avatar billede snepnet Nybegynder
15. april 2005 - 14:31 #16
roger :o)
Avatar billede decrypto Nybegynder
15. april 2005 - 15:03 #17
jeg har fået lavet en ImageServer.aspx side med tilhørende codebehind side. Hvad skal der stå i ImageServer.aspx filen og hvad skal der stå i codebehind filen. Har du et lille eksempel?
Avatar billede snepnet Nybegynder
15. april 2005 - 15:14 #18
i aspx-filen skal ikke stå noget - kun dit pagedirective, sådan her f.eks. :

<%@ Page language="c#" Codebehind="ImageServer.aspx.cs" Inherits="SomeNamespace.ImageServer" EnableSessionState="False" enableViewState="False"%>

og en komplet codebehind kunne være sådan her :

using System.Web.UI;

namespace SomeNamespace.WebUI
{
    public class ImageServer : System.Web.UI.Page
    {
        protected int ImageId
        {
            get{return int.Parse(Request.QueryString["ImageId"]);}
        }

        private void Page_Load(object sender, System.EventArgs e)
        {
            Response.ContentType = "JPG";   
           
            Response.ContentType = "image/octet-stream";
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + "Elmerfotokopi.jpg");
           
            Response.BinaryWrite( new DataAccess.DataAccess().GetImageBytes(ImageId) );
        }
    }
}

mvh
Avatar billede snepnet Nybegynder
15. april 2005 - 15:16 #19
(du kan opnå lidt mindre overhead hvis du bruger en ashx-fil istedet... men det kan vi altid vende tilbage til hvis du får ovenstående til at virke).
mvh
Avatar billede decrypto Nybegynder
15. april 2005 - 15:27 #20
ashx er usercontroller, ikk?
Avatar billede decrypto Nybegynder
15. april 2005 - 15:32 #21
oh, det er noget lignende det jeg har skrevet nu.
Avatar billede decrypto Nybegynder
15. april 2005 - 15:33 #22
Jeg mangler at inkludere et namespace for DataAccess(), hvad hedder det?
Avatar billede snepnet Nybegynder
15. april 2005 - 15:36 #23
new DataAccess.DataAccess().GetImageBytes(ImageId) er bare et eksempel... der skal du kalde det du selv har lavet der kan hente billeder til dig.
mvh
(ashx er ikke en usercontrol... de hedder ascx)
Avatar billede snepnet Nybegynder
15. april 2005 - 15:39 #24
nu henter du jo dine imagebytes i din datatabel, så det bedste er nok at du undlader at hente dem der, og så laver du en metode der alene henter dine imagebytes... det ville være en typisk måde at gøre det på.
mvh
Avatar billede decrypto Nybegynder
15. april 2005 - 15:41 #25
all right...tænker lige over hvad der står inden jeg kompilerer
Avatar billede decrypto Nybegynder
15. april 2005 - 15:43 #26
Der kunne jo fx stå:

MemoryStream stream = new MemoryStream ();
stream.Write (PhotoData, 0, PhotoData.Length);         
Bitmap bitmap = new Bitmap (stream);
return bitmap;


Istedet for min photo.cs klasse eller kan jeg ikke lave en instans af den klasse i page_load?
Avatar billede decrypto Nybegynder
15. april 2005 - 15:45 #27
Så nu hedder det...

    public class ImageServer : System.Web.UI.Page
    {

        protected int ImageId
        {
            get{return int.Parse(Request.QueryString["ImageId"]);}
        }

        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            Photo photo = new Photo();
            photo.StreamPhoto(p.ProductPhoto);
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }
        #endregion
    }
i min ImageServer.aspx
Avatar billede decrypto Nybegynder
15. april 2005 - 15:50 #28
hmmm jeg får en kompilerings fejl i min nye side, og det er jo klart p.ProductPhoto kennder den jo ikke i min nye side, den skal jeg jo parse med over fra min anden side, eller hvad?
Avatar billede snepnet Nybegynder
15. april 2005 - 15:58 #29
du får nok heller ikke så meget ud af det alligevel.... du skal have noget i denne stil  i din page_load :

Response.ContentType = "JPG"; 
         
Response.ContentType = "image/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + "Elmerfotokopi.jpg");
         
Response.BinaryWrite( GetImageBytes(ImageId) );

i samme klasse kan du så lave selve metoden :
(eller lægge den i dit datalag, hvis du har et sådan)

private byte[] GetImageBytes(imageId)
{
  byte[] image = null;
 
  // her må du så lave et dbcommandobject som du plejer (spørgs hvis du er i tvivl)
  SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);           
  if(reader.Read())
  {                                   
    image = new byte[Convert.ToInt32(reader.GetBytes(4, 0, null, 0, Int32.MaxValue))];
    reader.GetBytes(4, 0, image, 0, image.Length);
  }
  reader.Close();
}
(nu er eksemplet så med en sqldatareader, og den dutter så kun hvis det er en sqlserver du snakker med)

mvh
Avatar billede snepnet Nybegynder
15. april 2005 - 16:32 #30
jeg smutter lige det næste stykke tid ... jeg ser om du har skrevet når jeg kommer online igen :o)
vi skrives ved.
mvh
Avatar billede decrypto Nybegynder
15. april 2005 - 16:34 #31
Okay jeg er ved at have fat i proceduren.

1. Min første SQL hiver ikke billededata ud, men kun Photo_ID.

2. Denne Photo_ID bruger jeg til at 'kalde' ImageServer.aspx med, som jeg så på siden henter billede data med via SQL.

3. Resultatet af det smider jeg ned i et byte array, som jeg så hægter fast til en <img>

Håber jeg har fat i det...ellers må du korrigere mig.
Avatar billede decrypto Nybegynder
15. april 2005 - 16:37 #32
Men jeg har ikke tænkt mig at skrive sql i ImageServer.aspx, men i den laver jeg en instans af min Photo klasse, som så i en metode returnere et byte array, som jeg så vil arbejde udfra.

Jeg har nemlig delt op i nogle flere lag. :o)
Avatar billede decrypto Nybegynder
15. april 2005 - 16:38 #33
Yes vi skrives ved mr. Snep.Net :o)
Avatar billede snepnet Nybegynder
15. april 2005 - 16:46 #34
Det er meget fint.... Din 3'er jeg ikke helt med på hvad du mener med, men bare lige får at slå det fast.

Du kan i html ikke vise et billede med mindre du har en url til det, og det er derfor url'er på imageserver du skal give som source, som du kan se  i nedenstående :

<asp:image id=someImage runat="server" ImageUrl='<%# String.Format("ImageServer.aspx?ImageId={0}", ImageId) %>'></asp:image>

Denne her :
String.Format("ImageServer.aspx?ImageId={0}", ImageId)
Bliver jo fx. til :
ImageServer.aspx?ImageId=12

hvilket i sidste ende resulterer i en
<img src="ImageServer.aspx?ImageId=12" ... i den html-kode der smides ud til klienten.

Håber du er mæ på'n - ellers spørger du bare løs :o)

mvh
Avatar billede snepnet Nybegynder
15. april 2005 - 16:48 #35
(jeg smuttede så ikke helt - men NU smutter jeg ;o)
Avatar billede snepnet Nybegynder
15. april 2005 - 18:42 #36
halløj decrypto ... har du fået noget til at funge ?
mvh
Avatar billede decrypto Nybegynder
15. april 2005 - 19:05 #37
Nej ikke endnu. Jeg tog lige en lur, men jeg får kigget på det i løbet af aftenen og natten, håber du også er oppe. :-)

Men har jeg fat I den rigtige procedure, jeg skrev om tidligere?
Avatar billede decrypto Nybegynder
15. april 2005 - 19:06 #38
Hovsa...jeg skal lige være helt til stede...kan se du allerede har svaret på det...
Avatar billede decrypto Nybegynder
15. april 2005 - 19:28 #39
På min vareliste har jeg jo en datagrid hvori elementer under columns er definerede.
Det nye element har jeg skrevet som

<asp:datagrid id="productList" runat="server" AlternatingItemStyle-BackColor="lightBlue" Width="100%" AutoGenerateColumns="false" HeaderStyle-CssClass="listHeader" HeaderStyle-Font-Bold="True"
HeaderStyle-BackColor="#6db3da" Font-Size="8pt" Font-Name="Verdana" CellSpacing="0" CellPadding="3"GridLines="Both" BorderWidth="0">

<Columns>
<asp:image id=someImage runat="server" ImageUrl='<%# String.Format("ImageServer.aspx?PhotoId={0}", PhotoId) %>'></asp:image> <-------- Giver runtime error                           
<asp:HyperLinkColumn HeaderText="Navn" DataNavigateUrlField="ProduktID" DataNavigateUrlFormatString="produkt.aspx?id={0}" DataTextField="Navn" Target="_self" />

<asp:BoundColumn HeaderText="Pris" DataField="Pris" DataFormatString="{0:c}" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="right" />

<asp:HyperLinkColumn HeaderText="Indkøbskurv" Text="Tilføj" DataNavigateUrlField="ProduktID" DataNavigateUrlFormatString="indkobskurv.aspx?id={0}" HeaderStyle-HorizontalAlign="center" ItemStyle-HorizontalAlign="center" Target="_self" />

</Columns>
</asp:datagrid>
Avatar billede decrypto Nybegynder
15. april 2005 - 19:31 #40
Jeg har bare brug for at kunne definere en image server control, hvor i jeg kan skrive src="ImageServer.aspx?imageId={0}", sådan som jeg har forstået det. ImageServer.aspx tager sig så af selve billede håndteringen udfra ImageID.
Avatar billede decrypto Nybegynder
15. april 2005 - 19:35 #41
Lige nu har jeg skrevet...

<asp:HyperLinkColumn HeaderText="#" DataNavigateUrlField="ProduktID" DataNavigateUrlFormatString="produkt.aspx?id={0}"
DataTextField="PhotoID" Target="_self" />

Og får som forventet et hyperlink med ImageID som som teksten. Det skal jo bare være et <asp:Image...> men der kommer sgu feil :o(
Avatar billede decrypto Nybegynder
15. april 2005 - 19:45 #42
og der er jo ikke noget, der hedder <asp:ImageColumn....>
Avatar billede decrypto Nybegynder
15. april 2005 - 20:15 #43
Hopla jeg fandt selv ud af det sidste...jeg lavede bare en template column

                                                        <asp:TemplateColumn HeaderText="#">
                                                        <ItemTemplate>
                                                            <asp:Image ID="cbExample" runat="server" ImageUrl="gfx/closewin.gif"></asp:Image>
                                                        </ItemTemplate>
                                                        </asp:TemplateColumn>
Avatar billede decrypto Nybegynder
15. april 2005 - 20:38 #44
ImageUrl='<%# String.Format("ImageServer.aspx?ImageId={0}", ImageId) %>'

Gav fejl...så jeg har skrevet...

<asp:Image ID="Image" runat="server" ImageUrl="ImageServer.aspx?PhotoId={0}"></asp:Image>

...det er vel ligeså godt.
Avatar billede decrypto Nybegynder
15. april 2005 - 20:54 #45
Nej...ImageUrl="ImageServer.aspx?PhotoId={0}" giver ikke den rigtige PhotoID der står bare "PhotoId={0}"...hvordan løser jeg det????

Jeg prøver mig frem.
Avatar billede decrypto Nybegynder
15. april 2005 - 21:52 #46
Har ingen ide om hvordan jeg kan få ImageUrl="ImageServer.aspx?PhotoId={0}" til at vise det rigtige idnr...
Avatar billede snepnet Nybegynder
15. april 2005 - 21:59 #47
er du vimmer.... du har jo griflet og griflet :o)
kig tilbage til det jeg har skrevet tidligere..... der ligger en String.Format(...)... det er format-funktionen der sørger for, at {0} bliver skiftet ud med det reelle id.
mvh
Avatar billede decrypto Nybegynder
15. april 2005 - 22:11 #48
:o)

Jo men den giver jo runtime error. Kan ImageUrl='<%# String.Format("ImageServer.aspx?ImageId={0}", ImageId) %>' godt 'tåle' at stå i en datagrid, jeg prøver lige igen...
Avatar billede decrypto Nybegynder
15. april 2005 - 22:21 #49
hmmm tag is not wellformed...
Avatar billede decrypto Nybegynder
15. april 2005 - 22:24 #50
<asp:Image id="ProductImage" runat="server" ImageUrl="<%# String.Format("ImageServer.aspx?id={0}", PhotoID) %>"></asp:Image>

Den er da velformet...
Avatar billede decrypto Nybegynder
15. april 2005 - 23:30 #51
Har læst på nettet at:

The problem is that the ASP.NET parser does not allows nested double quotes. The solution is very easy, use single quotes for the HTML property instead of double quotes:

Og efter at fulgt eksemplet, har jeg jo rettet det til ', men stadigvæk samme fejl...
Avatar billede decrypto Nybegynder
15. april 2005 - 23:31 #52
Næææ vent det virker, der er bare en anden fejl...
Avatar billede decrypto Nybegynder
15. april 2005 - 23:34 #53
The name 'PhotoID' does not exist in the class or namespace 'ASP.produktLst_aspx'
Avatar billede decrypto Nybegynder
15. april 2005 - 23:35 #54
Hvordan kan den se den?
Avatar billede snepnet Nybegynder
16. april 2005 - 02:41 #55
Du har det nok i dit dataitem.... syntaksen er typisk :

DataBinder.Eval(Container.DataItem, "PhotoID")

Så hele udtrykket bliver noget i stil med :

<asp:Image id="ProductImage" runat="server" ImageUrl="<%# String.Format("ImageServer.aspx?id={0}", DataBinder.Eval(Container.DataItem, "PhotoID")) %>"></asp:Image>

mvh
Avatar billede decrypto Nybegynder
16. april 2005 - 10:47 #56
ahh ok....jeg prøver...
Avatar billede decrypto Nybegynder
16. april 2005 - 10:51 #57
Hurra..."one tiny step for me, but a major step for mykind"
Avatar billede decrypto Nybegynder
16. april 2005 - 10:53 #58
så nu magler jeg 'bare' imageServer.aspx delen. Jeg tænkte på...kunne man ikke lave to metoder i den et, der udfra billedeid hentede billedet ud fra databasen, og en anden metode der tager billede data med som parameter.
Avatar billede decrypto Nybegynder
16. april 2005 - 11:28 #59
Underligt jeg har smidt mine opdateringer op hos mit hosting bureau, og så kommer der fejl hos dem men ikke hos mig. Jeg får at vide: "Specified cast is not valid.", det har virket før. Fatter ikke hvad det kan være, alting fungerer lokalt hos mig.

Any idea hvad det kan være?

Stack Trace:


[InvalidCastException: Specified cast is not valid.]
  Product.GetProductSearchLst(String SoegStreng)
  wwwbutikdk.produktLst.Page_Load(Object sender, EventArgs e)
  System.EventHandler.Invoke(Object sender, EventArgs e) +0
  System.Web.UI.Control.OnLoad(EventArgs e) +67
  System.Web.UI.Control.LoadRecursive() +35
  System.Web.UI.Page.ProcessRequestMain() +750
Avatar billede snepnet Nybegynder
16. april 2005 - 11:43 #60
"godmorgen" decrypto :o)

hvordan ser din GetProductSearchLst(string sogstring) ud ?

mvh
Avatar billede decrypto Nybegynder
16. april 2005 - 11:53 #61
Godmorgen.

public ArrayList GetProductSearchLst(string SoegStreng)
{
string strSql = "SELECT product.id AS product_id, product.name AS product_name, product.price AS product_price, photo.id as photo_id, photo.photo_data FROM product INNER JOIN photo ON (product.photo_id = photo.id) WHERE (NAME LIKE '%"+ SoegStreng +"%')ORDER BY NAME;";

DbConnector dbCon = new DbConnector();
MySqlDataReader rdr = dbCon.DbConnect(strSql);

ArrayList arrLstProduct = new ArrayList();
           
while (rdr.Read())
    {
    ProductData p = new ProductData();
    p.ProductId    =  (int) rdr["product_id"];
    p.ProductName    =  (string) rdr["product_name"];
    p.ProductPrice    =  Convert.ToDecimal(rdr["product_price"]);
        p.ProductPhotoId =  (int) rdr["photo_id"];
        p.ProductPhoto  =  (byte[])rdr["photo_data"];
        arrLstProduct.Add(p);
    }
    dbCon.DbClose();
    return arrLstProduct;
}


//DbConnector dbCon = new DbConnector(); er min egen DatabaseConnection dimmer.
Avatar billede decrypto Nybegynder
16. april 2005 - 11:58 #62
Det underlige og sjove er at det har virket...men det er vel en del af min generelle indlæring, at der sikkert noget jeg rettet, der så har give en sideeffekt, men alting virker som det skal lokalt hos mig.

Nu da jeg har inddraget så meget kan du jo besøge min side på -> http://butik.fasil.dk
Avatar billede decrypto Nybegynder
16. april 2005 - 11:59 #63
Det er ikke noget jeg laver for nogen, bare et "lidt indlæring og praktisk erfaring med .Net og c#" -Site :o)
Avatar billede snepnet Nybegynder
16. april 2005 - 12:15 #64
du har flere casts i din while kan jeg se... du kan prøve at se om det ikke er en af dem der fejler.
mvh
Avatar billede decrypto Nybegynder
16. april 2005 - 12:21 #65
Så skulle det være-> p.ProductPhoto  =  (byte[])rdr["photo_data"]; for den fejler også herhjemme, når jeg i min DB conn streng ændrer til det mit webhosting bureau vil connecte med deres database. Jeg udkommentere lige den del...
Avatar billede decrypto Nybegynder
16. april 2005 - 12:27 #66
Det var sku den... den må jeg bokse med senere. Først gælder det om at få billeder ud fra db YEAHHHH!
Avatar billede decrypto Nybegynder
16. april 2005 - 14:28 #67
Jeg bevæger mig langsomt hen imod programmerings nirvana....hold øje herinde Mr. Snep.net :o), og i det hele taget alle andre...jeg poster løsningen ind her når den er klar.
Avatar billede snepnet Nybegynder
16. april 2005 - 14:32 #68
:o) - bare iorden... Jeg skal nok holde øje !
mvh
Avatar billede decrypto Nybegynder
16. april 2005 - 20:23 #69
Hvordan er det nu man tildeler en variabel en værdi fra indholdet af et array's første index?

byte[] imageData = arrImage[0]????
Avatar billede decrypto Nybegynder
16. april 2005 - 20:52 #70
arrImage[0] er vist korrekt...fandt lige et eksempel på nettet (har ingen c# bøger) :o(
Avatar billede decrypto Nybegynder
16. april 2005 - 20:54 #71
hmm det kan jeg ikke da arrImage ikke kun indholder byte[]...
Avatar billede decrypto Nybegynder
16. april 2005 - 21:08 #72
Hvad skal jeg inkludere (using) øverst oppe for at kunne undgå denne fejl:

'System.Array' does not contain a definition for 'GetBytes'
Avatar billede decrypto Nybegynder
16. april 2005 - 21:15 #73
Arrghh kan ikke finde det på nettet.... :o(
Avatar billede decrypto Nybegynder
16. april 2005 - 21:17 #74
Håber ikke det er noget SQL server reader afhænigt...jeg har jo gang i en MySQL.
Avatar billede decrypto Nybegynder
16. april 2005 - 21:23 #75
Inden jeg jonglerer med den....nu har jeg lidt kode klar for lige at teste om min imageServer.aspx virker... på min produktliste side har jeg jo det datagrid, hvori jeg har et billeder, der henviser til ('src=imageServer.aspx?id=...'). Er det bare det. Hvis jeg for eksempel bare på min imageServer.aspx skriver et billede ud, vil det så blive vist uden videre`?
Avatar billede decrypto Nybegynder
16. april 2005 - 22:09 #76
Jeg har kigget på dit eksempel længere oppe, og har nogle spørgsmål til dem:

Response.ContentType = "JPG";  <------ Hvad hvis det skal være en generel billedevisnings side, hvor type Gif også skal bruges.
         
Response.ContentType = "image/octet-stream"; <--- er den fælles også for filtyper som gif?
Response.AppendHeader("Content-Disposition", "attachment;filename=" + "Elmerfotokopi.jpg"); <---- Er det noget jeg SKAL have med, det virker som et eksempel du bruger? Kan jeg bare slette denne linje?
Avatar billede decrypto Nybegynder
16. april 2005 - 22:13 #77
MIt eksempel ser således ud:


        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            System.Web.HttpContext.Current.Response.BinaryWrite( GetImageBytes(1) );


        }

        private byte[] GetImageBytes(int ImageID)
        {
            Image img = new Image();
            ArrayList arrImage = img.GetImageByID(1);
           
            foreach(ImageData i in arrImage)
            {
                byte [] imgData = i.ImageBin;
                MemoryStream stream = new MemoryStream ();
                stream.Write (imgData, 0, imgData.Length);         
                Bitmap bitmap = new Bitmap (stream);
                //imgData = new byte[Convert.ToInt32(imgData.GetBytes(4, 0, null, 0, Int32.MaxValue))];
                //imgData.GetBytes(4, 0, imgData, 0, imgData.Length);
                System.Web.HttpContext.Current.Response.ContentType = "image/gif"; 
                bitmap.Save (System.Web.HttpContext.Current.Response.OutputStream, ImageFormat.Gif);
                //return imgData;
            }
           
            //image = new byte[Convert.ToInt32(image.GetBytes(4, 0, null, 0, Int32.MaxValue))];
            //image.GetBytes(4, 0, image, 0, image.Length);
           
        }
Avatar billede decrypto Nybegynder
16. april 2005 - 22:16 #78
(Jeg har hardcodet værdien 1 som ImageID, for at teste om der kommer noget)
Denne version er vist mere rigtig, men giver fejlen:
\imageServer.aspx.cs(47): The name 'imgData' does not exist in the class or namespace 'wwwbutikdk.ImageServer'


        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            System.Web.HttpContext.Current.Response.BinaryWrite( GetImageBytes(1) );


        }

        private byte[] GetImageBytes(int ImageID)
        {
            Image img = new Image();
            ArrayList arrImage = img.GetImageByID(1);
           
            foreach(ImageData i in arrImage)
            {
                byte [] imgData = i.ImageBin;
                MemoryStream stream = new MemoryStream ();
                stream.Write (imgData, 0, imgData.Length);         
                Bitmap bitmap = new Bitmap (stream);
                //System.Web.HttpContext.Current.Response.ContentType = "image/gif"; 
                //bitmap.Save (System.Web.HttpContext.Current.Response.OutputStream, ImageFormat.Gif);
            }
            return imgData;           
            //image = new byte[Convert.ToInt32(image.GetBytes(4, 0, null, 0, Int32.MaxValue))];
            //image.GetBytes(4, 0, image, 0, image.Length);
           
        }
Avatar billede decrypto Nybegynder
16. april 2005 - 22:31 #79
Nu ser min kode således ud, og er nok tættest på den rigtige, men jeg har problemer med GetBytes.

Fejlen: \imageServer.aspx.cs(42): 'System.Array' does not contain a definition for 'GetBytes'


        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            Response.ContentType = "GIF";
            Response.ContentType = "image/octet-stream";
            System.Web.HttpContext.Current.Response.BinaryWrite( GetImageBytes(1) );


        }

        private byte[] GetImageBytes(int ImageID)
        {
            Image img = new Image();
            ArrayList arrImage = img.GetImageByID(ImageID);
           
            ImageData i = new ImageData();
            byte [] imgData = (byte [])i.ImageBin;
            imgData = new byte[Convert.ToInt32(imgData.GetBytes(4, 0, null, 0, Int32.MaxValue))];
            imgData.GetBytes(4, 0, imgData, 0, imgData.Length);
           
        }
Avatar billede decrypto Nybegynder
16. april 2005 - 22:32 #80
Hvad mangler jeg?
Avatar billede decrypto Nybegynder
16. april 2005 - 22:34 #81
Det virker som om, det er database reader tingst.
Avatar billede decrypto Nybegynder
16. april 2005 - 22:40 #82
Jeg har ledt i MySQL dokumentationen, og har fundet ud af at GetBytes findes ->
MySql.Data.MySqlClient.MySqlDataReader.GetBytes, men selv efter at have skrevet den ind i top som:

using MySql;
using MySql.Data;
using MySql.Data.MySqlClient;

har det ikke hjulpet en dadel....hvad mangler jeg?
Avatar billede decrypto Nybegynder
16. april 2005 - 22:41 #83
Men min imgData.GetBytes hvor imgData jo ikke er en reader...
Avatar billede decrypto Nybegynder
16. april 2005 - 22:53 #84
Hvad kan man gøre......
Avatar billede snepnet Nybegynder
16. april 2005 - 23:18 #85
ro på nu decrypto... træk lige vejret :o)

kan du skrive hvad planen er med hver af disse linier :

private byte[] GetImageBytes(int ImageID)
{
    Image img = new Image();
    ArrayList arrImage = img.GetImageByID(ImageID);
 
    ImageData i = new ImageData();
    byte [] imgData = (byte [])i.ImageBin;
    imgData = new byte[Convert.ToInt32(imgData.GetBytes(4, 0, null, 0, Int32.MaxValue))];
    imgData.GetBytes(4, 0, imgData, 0, imgData.Length);
 
}

det eneste du skal gøre fra den metode er, at hente billedet op fra basen og returnerer det....
jeg kan ikke se hvad du skal med Image, og ArrayList og alt det der....

sådan noget i denne stil :

  byte[] image = null;

  MySqlCommand command = new MySqlCommand("select image_data from sometable where imageid="+imageid, someConnection);
  MySqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);         
  if(reader.Read())
  {                                 
    image = new byte[Convert.ToInt32(reader.GetBytes(4, 0, null, 0, Int32.MaxValue))];
    reader.GetBytes(4, 0, image, 0, image.Length);
  }
  reader.Close();
 
  return image;

mvh
Avatar billede decrypto Nybegynder
16. april 2005 - 23:49 #86
Tager lige en dyyyyyyb indånding....:o)

MySqlCommand command... er det ikke noget SQL server specifikt???

Jeg kan se at du har SQL stående på denne side. Jeg har noget der anderledes. Du kan se at jeg laver en:

ImageData i = new ImageData();

Jeg har en klasse, hvori jeg henter billedet....

public ArrayList GetImageByID(int ImageID)
        {
            string strSql = "SELECT photo.id as photo_id, photo.photo_data FROM photo WHERE photo.id = 1";
            DbConnector dbCon = new DbConnector();
            MySqlDataReader rdr = dbCon.DbConnect(strSql);

            ArrayList arrImage = new ArrayList();
           
            if(rdr.Read())
            {
                ImageData i = new ImageData();
                i.ImageID                    =                (int) rdr["photo_id"];
                i.ImageBin                    =                (byte[])rdr["photo_data"];
                arrImage.Add(i);
            }

            dbCon.DbClose();
            return arrImage;

        }
imgData indholder dermed mit billede, hvorpå jeg forsøger at lave en GetBytes på...men det jo ikke en reader, så hvordan kan jeg få udført GetBytes på imgData?
Avatar billede decrypto Nybegynder
16. april 2005 - 23:59 #87
Jeg forsøger med følgende i min Image klasse:

public ArrayList GetImageByID(int ImageID)
        {
            string strSql = "SELECT photo.photo_data FROM photo WHERE photo.id = 1";
            DbConnector dbCon = new DbConnector();
            MySqlDataReader rdr = dbCon.DbConnect(strSql);

            ArrayList arrImage = new ArrayList();
           
            if(rdr.Read())
            {
                ImageData i = new ImageData();
                //i.ImageBin                    =                (byte[])rdr["photo_data"];
                i.ImageBin = new byte[Convert.ToInt32(rdr.GetBytes(4, 0, null, 0, Int32.MaxValue))];
                rdr.GetBytes(4, 0, i.ImageBin, 0, i.ImageBin.Length);
                arrImage.Add(i);
            }
Avatar billede decrypto Nybegynder
17. april 2005 - 00:00 #88
Men så får jeg en fejl, der siger:

\imageServer.aspx.cs(38): 'wwwbutikdk.ImageServer.GetImageBytes(int)': not all code paths return a value
Avatar billede decrypto Nybegynder
17. april 2005 - 00:09 #89
Skriver jeg sådan kommer der ingen fejl, men der bliver ikke vist nogen billeder:

*Image.cs* //Image klasse

        public ArrayList GetImageByID(int ImageID)
        {
            string strSql = "SELECT photo.photo_data FROM photo WHERE photo.id = 1";
            DbConnector dbCon = new DbConnector();
            MySqlDataReader rdr = dbCon.DbConnect(strSql);

            ArrayList arrImage = new ArrayList();
           
            if(rdr.Read())
            {
                ImageData i = new ImageData();
                //i.ImageBin                    =                (byte[])rdr["photo_data"];
                i.ImageBin = new byte[Convert.ToInt32(rdr.GetBytes(4, 0, null, 0, Int32.MaxValue))];
                rdr.GetBytes(4, 0, i.ImageBin, 0, i.ImageBin.Length);
                arrImage.Add(i);
            }
           
            dbCon.DbClose();
            return arrImage;

        }

*imageServer.aspx.cs* // Codebehind til imageServer.aspx
private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            Response.ContentType = "gif";
            Response.ContentType = "image/octet-stream";
            System.Web.HttpContext.Current.Response.BinaryWrite( GetImageBytes(1) );


        }

        private byte[] GetImageBytes(int ImageID)
        {
            Image img = new Image();
            ArrayList arrImage = img.GetImageByID(ImageID);
           
            ImageData i = new ImageData();
            byte [] imgData = (byte [])i.ImageBin;
            return imgData;
        }

*imageServer.aspx*
<%@ Page language="c#" Codebehind="imageServer.aspx.cs" Inherits="wwwbutikdk.ImageServer" EnableSessionState="False" enableViewState="False"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>ImageServer</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
        </form>
    </body>
</HTML>
Avatar billede decrypto Nybegynder
17. april 2005 - 00:10 #90
Er jeg tæt på eller hvad? :o)
Avatar billede decrypto Nybegynder
17. april 2005 - 00:22 #91
Lige for at give en ide om hvordan jeg har inddelt koden i lag.

-----------------------------------
| Præsentationslag (*.aspx)      |   
-----------------------------------
| Applikations lag (*.aspx.cs)    |
-----------------------------------
| Business logic lag (*.cs)      |
-----------------------------------
| Data access lag (DbConnector.cs)|
-----------------------------------
| Database lag (MySQL 4.1)        |
-----------------------------------

Håber det ikke var det rene volapyk.
Avatar billede snepnet Nybegynder
17. april 2005 - 11:10 #92
det er ikke volapyk .... der er bare meget :o)

jeg går ud fra at dit billede ligger i databasen som en stak bytes, og dem skal du bare have skrevet til din outputstream fra imageserveren.

såhhh... hvis vi tager det sidste du skrev, og ændrer lidt i det :
(jeg vælger at se bort fra den klasse du har der hedder imagedata, da jeg ikke kan se den noget sted, og heller ikke helt forstår idéen med den).

*imageServer.aspx.cs* // Codebehind til imageServer.aspx
private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            Response.ContentType = "gif";
            System.Web.HttpContext.Current.Response.BinaryWrite( GetImageBytes(1) );
        }

        private byte[] GetImageBytes(int ImageID)
        {
            Image img = new Image();
            return img.GetImageByID(ImageID);
        }

*imageServer.aspx* - der skal ikke stå andet end nedenstående... altså kun dit pagedirective

<%@ Page language="c#" Codebehind="imageServer.aspx.cs" Inherits="wwwbutikdk.ImageServer" EnableSessionState="False" enableViewState="False"%>

din imageklasse kunne så se sådan her ud :
(jeg vil anbefale dig at kalde den noget andet - bare så du ikke får sammenfald med de allerede eksisterende imageklasser) såhh... :

        public byte[] GetImageByID(int ImageID)
        {
            string strSql = "SELECT photo.photo_data FROM photo WHERE photo.id = 1";
            DbConnector dbCon = new DbConnector();
            MySqlDataReader rdr = dbCon.DbConnect(strSql);

            byte[] imagebytes = null;
         
            if(rdr.Read())
            {
                imagebytes = new byte[Convert.ToInt32(rdr.GetBytes(4, 0, null, 0, Int32.MaxValue))];
                rdr.GetBytes(4, 0, imagebytes, 0, imagebytes.Length);
            }
         
            dbCon.DbClose();
            return imagebytes;
        }

mvh
Avatar billede decrypto Nybegynder
17. april 2005 - 11:24 #93
imagedata er bare en wrapper klasse... det jeg tror man kalder det.
Avatar billede decrypto Nybegynder
17. april 2005 - 11:24 #94
Vi prøver...
Avatar billede decrypto Nybegynder
17. april 2005 - 11:33 #95
hmm...jeg har kopieret koden ind, og der kommer heller ikke nogen kompileringsfejl, men der kommer ikke noget billede...
Avatar billede decrypto Nybegynder
17. april 2005 - 11:35 #96
det virker som om imageServer.aspx slet ikke bliver kaldt på nogen måde, ellers ville der jo også komme det på skærmen jeg skriver ud i min DbConnector klasse. Der skriver jeg nemlig min strSql'er ud.
Avatar billede snepnet Nybegynder
17. april 2005 - 11:41 #97
prøv bare at lave en enkelt form, hvor du bare sætter følgende ind :


<asp:Image id="ProductImage" runat="server" ImageUrl="ImageServer.aspx"%>"></asp:Image>


mvh
Avatar billede snepnet Nybegynder
17. april 2005 - 11:42 #98
(det forudsætter at du ligesom det kode du viste før bare henter billedet med id = 1 op fra basen.... så må vi gøre det til en variabel senere)
mvh
Avatar billede decrypto Nybegynder
17. april 2005 - 11:42 #99
"SELECT photo.photo_data FROM photo WHERE photo.id = 1" ville jo derfor blive skrevet ud på skærmen, vis den overhovedet blev kaldt.
Avatar billede decrypto Nybegynder
17. april 2005 - 11:44 #100
vi prøver...
Avatar billede decrypto Nybegynder
17. april 2005 - 11:48 #101
Jeg har lavet en ny test form, hvor jeg bare har smidt "<asp:Image id="ProductImage" runat="server" ImageUrl="imageServer.aspx"></asp:Image>" ind, men der kommer ikke noget billede ud.
Avatar billede decrypto Nybegynder
17. april 2005 - 11:50 #102
Hey, jeg glemte at smide tingene ind i dens codebehind side. og nu får jeg fejl (det er vel altid et godt tegn :o)

Index was outside the bounds of the array.

Line 76:             if(rdr.Read())
Line 77:             {
Line 78:                 imagebytes = new byte[Convert.ToInt32(rdr.GetBytes(4, 0, null, 0, Int32.MaxValue))];
Line 79:                 rdr.GetBytes(4, 0, imagebytes, 0, imagebytes.Length);
Line 80:             }
Avatar billede snepnet Nybegynder
17. april 2005 - 11:52 #103
prøv at vis mig hele din code-behind fra imageserveren, og ogås den aktuelle aspx-fil.
mvh
Avatar billede snepnet Nybegynder
17. april 2005 - 11:54 #104
ahh... du henter også fra plads nummer 4 med den kode.... men det er jo pt. kun billedet du suger med op.... skift 4-tallerne ud med nuller.
mvh
Avatar billede decrypto Nybegynder
17. april 2005 - 11:54 #105
ok...prøver...
Avatar billede decrypto Nybegynder
17. april 2005 - 11:57 #106
hurra... nu virker test form....nu mangler jeg bare at gøre det på min rigtige side. tak for tålmodigheden og hjælpen...resten kan jeg selv tage over med... smid bare et svar ind.
Avatar billede decrypto Nybegynder
17. april 2005 - 11:58 #107
og min rigtige side virker også, da jeg jo har rettet i min klasse...hey jeg ved at man også selv kan styre størrelsen på billedet on the fly, så man også kan lave thumbnails ud fra eet billede..
Avatar billede decrypto Nybegynder
17. april 2005 - 11:59 #108
hvordan kunne jeg gøre det udfra min nuværende kode?

Husk at smide et svar ind :o)
Avatar billede snepnet Nybegynder
17. april 2005 - 12:41 #109
de er ikke så slemt at rezise on-the-fly.... du kan få en metode til det her :

public static byte[] ResizeImage(byte[] image, int width, int height)
{
    System.Drawing.Bitmap bmpOut = null;

    try
    {
        Bitmap bmp = new Bitmap(new MemoryStream(image));
        bmpOut = new Bitmap(width, height);
        Graphics g = Graphics.FromImage(bmpOut);
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        g.FillRectangle(Brushes.White, 0, 0, width, height);
        g.DrawImage(bmp, 0, 0, width, height);
        bmp.Dispose();
       
        // og så lige tilbage til byte[]               
        MemoryStream resultStream = new MemoryStream();
        bmpOut.Save(resultStream, System.Drawing.Imaging.ImageFormat.Gif);
        byte[] result = resultStream.ToArray();
        bmpOut.Dispose();
        return result;
    }
    catch
    {
        return null;
    }
}

(nu ved jeg ikke hvad du har af usings i forvejen, men System.IO, og System.Drawing skal du nok proppe på det du har).

mvh
Avatar billede snepnet Nybegynder
17. april 2005 - 12:45 #110
og et svar :o)
mvh
Avatar billede decrypto Nybegynder
17. april 2005 - 12:49 #111
Endnu en gang tak for hjælpen....:-)
Avatar billede snepnet Nybegynder
17. april 2005 - 12:53 #112
det var så lidt decrypto - håber du får det til at snurre... ellers spørger du bare her :o)
mvh
Avatar billede decrypto Nybegynder
17. april 2005 - 14:24 #113
Det virker fint det hele... jeg har bare et sidste spørgsmål. Når jeg bruger image resize on the fly :o), så ser billedet meget grumset ud, jeg ved godt, at man ikke kan regne med kvalitet os sådan noget, men er det her man skal bruge billeder i *.png format, så det ikke ser så grimt ud med tilpassede billedestørrelser.
Avatar billede decrypto Nybegynder
17. april 2005 - 14:30 #114
Jeg har prøvet at gemme et billede som png, men det hjalp ikke på kvalitet...det ser bare for grumset ud.
Avatar billede snepnet Nybegynder
17. april 2005 - 14:35 #115
hmmm .... det er noget du godt kan komme til at bokse lidt med, hvis du skal have det rigtig labert.

prøv at check den her .... der er en del omkring det, og et link til et lækkert library der kan give en hånd med det.

http://www.eksperten.dk/spm/521948

mvh
Avatar billede decrypto Nybegynder
17. april 2005 - 14:36 #116
....eller det den opløsning et billede er gemt i der er afgørende....?
Avatar billede snepnet Nybegynder
17. april 2005 - 14:38 #117
prøv at kig spørgsmålet jeg linkede til igennem.
mvh
Avatar billede snepnet Nybegynder
17. april 2005 - 14:42 #118
(jeg smutter lige et par timer)
mvh
Avatar billede decrypto Nybegynder
17. april 2005 - 20:02 #119
Meget interessant link og artikler i den anden tråd. Jeg har læst på et af de link i den anden tråd, hvori der er eksempler på billeder, der skal gemmes, eller hentes fra fra webserveren lokalt og ikke fra databasen. Jeg går lige i dybden med den senere....Hey har du ligeledes et eksempel på hvordan man smider et billede ind i en database udfra en form?
Avatar billede decrypto Nybegynder
17. april 2005 - 22:48 #120
Efter at have gemt som png format, så er kvalieten helt fin ;o)
Avatar billede snepnet Nybegynder
17. april 2005 - 23:01 #121
jamen det er jo fremragende....  du skrev ellers først, at det ikke virkede bedre med png :o)

mht. til det med at gemme et billede fra en form - så skal du bruge en alminde <input type="file" (den ligger i din toolbox under html).
den skal du sætte angive med runat="server", og du kan så sætte en knap ind som brugeren så eksekverer uploaded med.
i handleren af denne knap gufler du så den fil der er uploaded ved fileUploadControl.PostetFile (antager her at du giver dit filuploadningsfelt id'et fileUploadControl).

du kan så lave et Image ud af den fil du har fået ind, og kigge på diverse omkring... efterfølgende kan du så gemme de rå bytes i basen.... der er en del eksempler på nettet omkring det ... du kan f.eks. se denne :
http://odetocode.com/Articles/163.aspx

mvh
Avatar billede decrypto Nybegynder
18. april 2005 - 11:18 #122
Jeg havde før bare sat contenttype lig med png, uden at gemme det som png.

Interessant link....tak for alt, det er rart med personer, der er så hjælpsomme og tålmodige, jeg har givet dig karma. :o)
Avatar billede snepnet Nybegynder
18. april 2005 - 11:51 #123
oh ja ... du har givet mig go' karma :P - mange tak :o)
det er muligt jeg ikke kan komme på nettet frem til onsdag aften, så hvis jeg ikke svarer herude er det ikke fordi jeg har glemt dig.
håber du får det hele til at spille.
vi skrives ved.
mvh
Avatar billede heloo Nybegynder
26. juni 2007 - 14:24 #124
hvorfor skal det være så omfattende...
hvorfor ikke bare gøre såden:
<asp:TemplateColumn>
                <ItemStyle VerticalAlign="Top" Width="15px"></ItemStyle>
                <ItemTemplate>
                                <img src='http://www.xx.dk/img/1030_<%# DataBinder.Eval(Container, "DataItem.thumbnail_media_id") %>.gif' width="15" height="15" />

                </ItemTemplate>
            </asp:TemplateColumn>
Avatar billede snepnet Nybegynder
26. juni 2007 - 22:34 #125
Fordi decrypto har billedet liggende i basen - ikke kun filnavnet.
Mvh
Avatar billede heloo Nybegynder
27. juni 2007 - 00:11 #126
oki det så jeg ikke lige... sorry
Havde selv lige brug for noget lign. så tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester