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

 

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

Εικόνες και GDI+

Îåêßíçóå áðü ôï ìÝëïò djapal. Τελευταία δημοσίευση από το μέλος KelMan στις 20-11-2005, 15:19. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  20-11-2005, 12:17 7200

    Huh? [:^)] Εικόνες και GDI+

    Καλημέρα. Έχω μια απορία που ενώ έψαξα στο διαδίκτυο, δε μπόρεσα να βρω άκρη. Θέλω να φτιάξω ένα πρόγραμμα όπου να έχω ένα πάνελ και να βάζω μέσα εικόνες και να τις μετακινώ όπου θέλω εγώ. Το πρόβλημα όμως είανι το εξής: θέλω να φαίνεται μόνο η φιγούρα και να μπορώ να αλλάζω εσωτερικά κάποια χρώματα. Ας όύμε ότι έχω έναν άνθρωπο. Να μπορώ π.χ. να του αλλάξω το χρώμα των μαλλιών και όταν τον προσθέτω στο πάνελ να μη μου φαίνεται το - συνήθως άσπρο - background του.

    Τι σκέφτηκα

    Οκ φτιάχνω μια συνάρτηση όπου παίρνει 1-1 τα πίξελς και μου λύνει τα χέρια. Πρόβλημα, Αν όμως θέλω να μην εμφανίζεται το άσπρο και έχει  π.χ. άσπρη μπλούζα ο άνθρωπος; Δε θα φαίνεται ούτε αυτή

    Έχω δει κάποια προγράμματα στυλ Inspiration όπου έχουν βιβλιοθήκες με φιγούρες και φαίνοντια μια χαρά. Αυτές οι εοκίνες είναι ειδικές ή απλές jpg;  Μήπως δηλαδή τελικά εγώ ψάχνω τσάμπα για να το κάνω αυτό μέσω jpg εικόνων, ενώ είναι ένα ειδικό format που δεν έχω ασχοληθεί.

    Επίσης, ένα τελευταίο. Μπορώ να κάνω serialize πολλές εικόνες σε binary αρχείο; Μπορώ να τις κάνω σε XML, αλλά θα προτιμούσα σε binary.

    Οποιοδήποτε hint ή κάποιος sample Κώδικος θα μου ήταν χρήσιμος!  

  •  20-11-2005, 12:33 7201 σε απάντηση της 7200

    Απ: Εικόνες και GDI+

    Το Jpeg format δεν υποστηρίζει transparency. Αν θέλεις transparency καλύτερα να δουλέψεις με PNG format που έχει πλήρες Alpha Channel (και πλήρες και μερικό transparency, πχ το pixel είναι κόκκινο αλλά έχει 50% διαφάνεια, οπότε κάνει blending με ότι είναι από πίσω) Αυτό ορίζεται για κάθε pixel, οπότε στα pixels των μαλιών θα έχεις transparency, η μπλούζα όμως όχι, ας είναι και τα δύο το ίδιο χρώμα.

    Για την αποθήκευση, μπορείς να κάνει ότι θέλεις σε ένα binary αρχείο. Πχ, κάνε το εξής: Βάλε στα πρώτα 100 bytes τον αριθμό των εικόνων που έχεις στο αρχείο σου. Μετά κράτα άλλα 100 bytes για να ορίσεις που αρχίζει και που τελιώνουν τα bytes κάθε εικόνας μέσα στο αρχείο, και μετά ρίξε μία μία τις εικόνες σου. (Η πρώτη μπακάλικη λύση που μου ήρθε στο μυαλό, τα νούμερα είναι ενδεικτικά). Με λίγα λόγια πρέπει να δομήσεις ένα δικό σου format για να αποθηκεύεις τις εικόνες (φαντάζομαι θέλεις κάτι αντίστοιχο των layers).
    Χρήστος Γεωργακόπουλος
  •  20-11-2005, 12:44 7202 σε απάντηση της 7200

    Απ: Εικόνες και GDI+

    Οκ ευχαριστώ! Θα το κοιτάξω!
  •  20-11-2005, 15:19 7203 σε απάντηση της 7202

    Απ: Εικόνες και GDI+

    Βέβαια το πιο σημαντικό πρόβλημα που έχεις, ανεξάρτητα με τον τύπο των αρχείων που δουλεύεις, είναι το ότι θα πρέπει τo transparency να εφαρμόζεται σε μια συγκεκριμένη περιοχή και όχι σε όλο το image.

    Για να το κάνεις αυτό υπάρχουν δύο τεχνικές. Η μία εφαρμόζεται όταν θέλεις να κάνεις transparent μόνο το background και να αφήσεις περιοχές από το foreground που τυγχάνει να έχουν το ίδιο χρώμα. Τότε, το background θα πρέπει να είναι ένα χρώμα που είναι δύσκολο να συναντήσεις στο image (πχ. fucshia, lime-green, κλπ) - όπως το blue/green box στον κινηματογράφο. Αυτή η λύση είναι εύκολη στην υλοποίηση αλλά προϋποθέτει ότι έχεις τον έλεγχο του image (πχ. είναι images από προϊόντα και αυτός που στα προμηθεύει δεσμεύεται να στα παρέχει με αυτή τη προδιαγραφή).

    Εναλλακτικά (και νομίζω ότι εδώ εμπίπτει το πρόβλημά σου), θα πρέπει να καθορίσεις το transparency μέσω μιας μάσκας που θα υποδηλώνει ποιές περιοχές μένουν ως έχουν και ποιές γίνονται transparent (ανεξάρτητα από το χρώμα των pixels τους). Γι αυτή τη λύση, μπορείς να βρεις μερικές πληροφορίες εδώ: http://www.codeproject.com/cs/miscctrl/TransButtonNetDemo.asp και εδώ: http://www.dogma.net/markn/articles/IPicture/

    Όταν τα καταφέρεις να δουλέψει το transparency όπως θέλεις, τα ξαναλέμε σχετικά με το serialization...


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems