Avatar billede c-sharp Nybegynder
20. september 2006 - 15:03 Der er 1 løsning

Hjælp til billeder fra database

Jeg er ved at lave en side hvor jeg vil prøve at opbevare min billeder i en database i stedet for på filsystemet. I den forbindelse er der opstået nogle spørgsmål:

1. Er det ikke muligt at publicere billederne så man kan gemme dem ved at højre klikke og vælge "Gem billede som"

2. Jeg resizer billerne "on the fly" men kan se at det belaster min maskine en del, hvordan bør jeg håndtere dette?

3. Min resize funktion skal gerne kunne håndtere alle billede formater, men i følgende linie skal man opgive et format billedet skal "gemmes" i:

bmpOut.Save(resultStream, System.Drawing.Imaging.ImageFormat.Jpeg);

kan jeg på nogen måde se af min Byte[] hvilket format billedet har?




jeg bruger følgende kode i min "ImageServer"(Tyv stjålet fra snepnet):


protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ConnectionString);
        SqlCommand command = new SqlCommand("select type, billede from billeder where billedeid = " + Request.QueryString["ImageId"], connection);
        connection.Open();
        SqlDataReader dr = command.ExecuteReader();
        if (dr.Read())
        {
            Response.ContentType = dr["type"].ToString();
            Response.BinaryWrite(ResizeImage((byte[])dr["billede"],800,0));
        }
        connection.Close();
    }

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

        try
        {
            Bitmap bmp = new Bitmap(new MemoryStream(image));
            if (height == 0)
            {
                double tmpHeight = ((double)bmp.Height / (double)bmp.Width) * width;
                height = (int)tmpHeight;
            }

            if (width == 0)
            {
                double tmpWidth = ((double)bmp.Width / (double)bmp.Height) * height;
                width = (int)tmpWidth;
            }

       
            bmpOut = new Bitmap(width, height);
            Graphics g = Graphics.FromImage(bmpOut);
            g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            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.Jpeg);
            byte[] result = resultStream.ToArray();
            bmpOut.Dispose();
            return result;
        }
        catch
        {
            return null;
        }
    }
Avatar billede c-sharp Nybegynder
05. januar 2007 - 13:55 #1
Lukker
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