Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Image από database + resize Images

Îåêßíçóå áðü ôï ìÝëïò gspiros. Τελευταία δημοσίευση από το μέλος gspiros στις 03-09-2007, 00:38. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-03-2007, 03:10 26968

    Image από database + resize Images

    Έχω στην βάση (SQL Server 2005) ένα πίνακα με images.
    Πώς θα καταφέρω να τις απεικονίσω σε μια σείδα?

    Οι φωτογραφίες γίνονται upload και download μια χαρά, το έχω ελέγξει αποθηκεύοντάστες στον δίσκο.
    Τι πρέπει όμως να κάνω για να φανούν στην ιστοσελίδα?
  •  24-03-2007, 15:30 26990 σε απάντηση της 26968

    Απ: Image από database

    Καταρχάς, θα πρέπει να κάνεις query στη βάση για πάρεις το image και (πιθανώς) το content type του, αν και εφόσον το έχεις αποθηκεύσει...

    Κατόπιν, το κάνεις output ως εξής:

    Response.ContentType = dr["myContentType"].ToString();
    Response.BinaryWrite( (byte[]) dr["myImage"] );

    το Response.ContentType μπορεί να είναι image/pjpeg ή image/jpeg για .jpg εικόνες, image/gif για .gif εικόνες και πολλά άλλα...

    αυστηρή προυπόθεση, στο output της σελίδας που θα τραβήξει και θα δείξει να μην υπάρχει τίποτε άλλο...η συγκεκριμένη σελίδα θα χρησιμοποιηθεί για να δείξει μόνο το image και τίποτε άλλο...

    Συνήθης τακτική είναι να τοποθετείται το retrieve/display για το image σε μία σελίδα με ένα όνομα τύπου GetShowImage.aspx και η οποία να καλείτει με κάποια μεταβλητή στο querystring, δηλαδή GetShowImage.aspx?ImageID=1


    Dimitris-Ilias Gkanatsios
    Developer Evangelist, Microsoft Hellas

    My Blog
    StudentGuru
    Twitter
    Facebook
  •  24-03-2007, 16:36 26995 σε απάντηση της 26990

    Απ: Image από database

    Δεν είναι δυνατόν να μην μπορώ να απεικονίσω στην ίδια σελίδα την εικόνα και κάποια άλλα στοιχεία που θέλω...

    Είχα διαβάσει (και έτσι το έφτιαξα) ότι στον SQL Server 2005 το data type image, αποθηκεύει πίνακα bytes.
    Ορίστε ο κώδικας για κατέβασμα απο την βάση.

            string strConnectionString = ConfigurationManager.
                ConnectionStrings["SqlConnectionString"].ConnectionString;
            SqlConnection myConnection = new SqlConnection(strConnectionString);

            string strCommandText = "SELECT photo FROM PhotoTable WHERE photoID=5";
            SqlCommand myCommand = new SqlCommand(strCommandText, myConnection);

            myConnection.Open();
            byte[] myBuffer=(byte[])myCommand.ExecuteScalar();
            myConnection.Close();

            GridView1.DataSource = myBuffer;
            GridView1.DataBind();

    //        File.WriteAllBytes("c:\\a.jpg", myBuffer);          // save to disk!

    //        Response.ContentType = "image/bmp";
    //        Response.Write(myBuffer);

    //        MemoryStream myStream = new MemoryStream(myBuffer, true);
    //        myStream.Write(myBuffer, 0, myBuffer.Length);

    //        Bitmap im = new Bitmap(myStream);
    //        Image1.Controls.Add(im);

    Με σχόλια έχω διάφορες άλλες προσπάθειες, καμία με επιτυχία...
    Όπως βλέπεις έχω προσπαθήσει και με Response.
    Αυτό που δεν μπορώ να καταλάβω είναι γιατί δεν δουλεύει με το GridView στο οποίο έχω φτιάξει asp:ImageField.

    Για το ανέβασμα χρησιμοποιώ τον παρακάτω κώδικα:

    FileStream myStream = new FileStream(myFile, FileMode.Open, FileAccess.Read);
            byte[] myBuffer = new byte[myStream.Length];
            myStream.Read(myBuffer, 0, (int)myStream.Length);
            myStream.Close();

            string strConnectionString = ConfigurationManager.
                ConnectionStrings["SqlConnectionString"].ConnectionString;
            SqlConnection myConnection = new SqlConnection(strConnectionString);

            string strCommandText = "INSERT INTO PhotoTable (photo) VALUES (@xx); SELECT SCOPE_IDENTITY();";
            SqlCommand myCommand = new SqlCommand(strCommandText, myConnection);

            myCommand.Parameters.Add("@xx", SqlDbType.Image).Value = myBuffer;
            myConnection.Open();

            int aux = 0;
            aux = Convert.ToInt32(myCommand.ExecuteScalar());
            myConnection.Close();

            Label1.Text = Convert.ToString(aux);

    Να προσθέσω ότι οι εικόνες όντως αποθηκεύονται στην βάση σωστά, διότι όταν τις κατεβάσω (με τον ίδιο κώδικα), αλλά τις σώζω στον δίσκο, όλα είναι μια χαρά!
    Έχω απελπιστεί! Βοήθεια!
  •  01-04-2007, 03:45 27610 σε απάντηση της 26995

    Απ: Image από database

    Δεν υπάρχει κάποιος που να έχει κάποια ιδέα πάνω στο πρόβλημα?
    Όπου και να έχω ψάξει, δεν μπορώ να βρω τίποτα...
    Please, βοήθεια!
  •  01-04-2007, 13:37 27628 σε απάντηση της 26995

    Απ: Image από database

    gspiros:
    Δεν είναι δυνατόν να μην μπορώ να απεικονίσω στην ίδια σελίδα την εικόνα και κάποια άλλα στοιχεία που θέλω...

    Μα μπορείς! Οταν τα παιδιά έλεγαν για την GetShowImage.aspx δεν εννοούσαν οτι σώνει και καλά αυτή θα είναι μια ξεχωριστή σελίδα. Μπορείς να δημιουργήσεις μια τέτοια σελίδα με Response.Contenttype να είναι image/jpeg π.χ. και μετά να τη χρησιμοποιήσεις μαζί με την παράμετρο του id η οτιδήποτε αλλο στο src attribute του img tag σου. Π.χ. <img src="GetShowImage.aspx?id=123">

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  02-04-2007, 20:54 27713 σε απάντηση της 27628

    Απ: Image από database

    Επιτέλους κατάλαβα τι πρέπει να κάνω και το κατάφερα!
    Ευχαριστώ πολύ παιδιά!
  •  03-04-2007, 18:08 27769 σε απάντηση της 27713

    Απ: Image από database

    Το resize των images, είναι καλό να γίνεται μέσω του property Height?
    πχ.    Image1.Height = 100;
    ή μήπως δημιουργούνται προβλήματα τα οποία δεν μπορώ να σκεφτώ???
  •  03-09-2007, 00:38 34669 σε απάντηση της 27769

    Απ: Image από database

    Στην σελίδα όπου φορτώνεται μόνο η εικόνα (πχ GetShowImage.aspx), μπορώ να κάνω SELECT και κλατι άλλο (χωρίς να το χρησιμοποιήσω)???
    Όταν κάνω SELECT δύο πράγματα (το ένα είναι η εικόνα), μου πετάει exception: Invalid object name 'photoCommants'.
    Γιατί γίνεται αυτό?
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems