Paytor Δημοσ. 19 Ιουλίου 2006 Δημοσ. 19 Ιουλίου 2006 Καλημέρα! Ξέρει μήπως κανένας πως γίνεται να φορτώσω gif εικόνα σε ένα Image, Picture Box ή DBImage!Η εικόνα αυτη μέτα θα περάσει στην βάση σαν Blob(Binary Large Object).Για bitmap και Jpeg το έχω καταφέρει.Εχω ψάξει και στο internet αλλα δεν βρήκα τίποτα, μόνο πάνω σε delphi αλλα και αυτο δεν δούλευε.Οποιαδήποτε ιδέα είναι καλοδεχούμενη!!!
Directx Δημοσ. 19 Ιουλίου 2006 Δημοσ. 19 Ιουλίου 2006 Δυστυχώς κάτι τέτοιο δεν είναι κατευθείαν εφικτό καθώς το GIF format δεν υποστηρίζεται άμεσα από την VCL συνεπώς θα πρέπει να αναζητήσεις components ή βιβλιοθήκες τρίτων κατασκευαστών ή να σχεδιάσεις μόνος σου τον απαιτούμενο κώδικα. Υ.Γ. Εγώ είχα χρησιμοποιήσει για υποστήριξη PNG προ καιρού την βιβλιοθήκη FreeImage, δεν χάνεις τίποτε να την ψάξεις (http://freeimage.sourceforge.net/)
Paytor Δημοσ. 19 Ιουλίου 2006 Μέλος Δημοσ. 19 Ιουλίου 2006 Ευχαριστώ για την πληροφορια.Και εγώ το σκέφτηκα αυτό αλλά είπα μήπως υπάρχει και κάτι αλλο που μπορεί να γίνει.Θα δοκιμάσω την βιβλιοθήκη που χρησιμοποίησες. Δυο αλλες απορίες που έχω ειναι 1) γιατί μου βγάζει το σφάλμα "cannot compare null to string" όταν θέλω να γυρίσω π.χ μια εικόνα που έχω αποθηκεύσει στην βάση σε ενα image, picture box η DBImage στην C.2) πως μπορώ να φορτώσω βιβλιοθήκη η οποία ειναι σαν dll και οχι σαν lib.Πρέπει να τρέξω το implib αλλα δεν ξέρω ακριβώς πως και πού.
Directx Δημοσ. 19 Ιουλίου 2006 Δημοσ. 19 Ιουλίου 2006 Για το πρώτο ερώτημα δεν μπορώ να προτείνω κάτι καθώς δεν έχω ασχοληθεί επισταμένος με τα Database components του C/C++ Builder, δεν θα ήταν άσχημο όμως να δημοσιεύσεις το επίμαχο κομμάτι κώδικα ώστε να καταλάβω εγώ ή κάποιος άλλος τι ακριβώς εννοείς. Όσον αφορά το δεύτερο ερώτημα, πράγματι χρειάζεται να χρησιμοποιήσεις το implib το οποίο βρίσκεται στον υποκατάλογο Bin της εγκατάστασης του C++ Builder. Η σύνταξη της εντολής είναι: Implib (options) lib_name dll_name Έτσι εάν θέλεις να δημιουργήσεις ένα LIB για το υποθετικό MYDLL.DLL γράφεις: Implib mydll.lib mydll.dll Σημείωση: Εάν το DLL περιέχει exports μορφής cdecl συμπεριέλαβε και το option -a ώστε τα exports του DLL να εισαχθούν με underscore πριν την ονομασία τους στο LIB (πχ. Implib –a mydll.lib mydll.dll). Υ.Γ. Για να δεις τι εισήχθη στο LIB δώσε TDUMP mydll.lib στο DOS prompt.
Paytor Δημοσ. 19 Ιουλίου 2006 Μέλος Δημοσ. 19 Ιουλίου 2006 Ευχαριστώ Directx!Θα δοκιμάσω το implib ετσι ακριβώς οπως είπες!Τωρα δεν μπορώ ομως γιατι είμαι στην δουλειά και δεν εχω την C++ Builder μπροστά μου.Οταν Μπορέσω σήμερα κάποια στιγμή θα βάλω και τον κώδικα στο forum(Database Components) να δούμε αν μπορούμε να βρούμε καμία λύση πανω στο σφάλμα "cannot compare null to string".
damn3 Δημοσ. 20 Ιουλίου 2006 Δημοσ. 20 Ιουλίου 2006 Δεν ξέρω εάν σε βοηθήσει ο παρακάτω κώδικας γιατί είναι σε Delphi. Load Image from blog field: > ImageData:= TMemoryStream.Create; try {create image data} BlogData:= PackageRead.CreateBlobStream(PackageRead.FieldByName('Image'), bmRead); try if BlogData.Size>0 then begin BlogData.Position:= 0; ImageData.Position:= 0; ImageData.CopyFrom(BlogData, BlogData.Size); ImageData.Position:= 0; Image.Picture.Bitmap.LoadFromStream(ImageData); end else Image:= ''; finally BlogData.Free; end; finally ImageData.Free; end; Save Image to blog field: > var DatabaseBitmap: TStream; BitmapFileStream: TFileStream; begin DBImage.DataField := ''; if OpenPicture.Execute then begin GamesTable.Edit; DatabaseBitmap := GamesTable.CreateBlobStream(GamesTable.FieldByName('Image'),bmWrite); BitmapFileStream := TFileStream.Create(OpenPicture.FileName, fmOpenRead); try BitmapFileStream.Position := 0; DatabaseBitmap.Position := 0; DatabaseBitmap.CopyFrom(BitmapFileStream, BitmapFileStream.Size); finally DatabaseBitmap.Free; BitmapFileStream.Free; end; end; DBImage.DataField := 'Image'; Σημείωση: το PackageRead είναι τύπου TADODataSet
Paytor Δημοσ. 20 Ιουλίου 2006 Μέλος Δημοσ. 20 Ιουλίου 2006 Ευχαριστώ damn3 θα τον δοκιμάσω και αυτον τον τρόπο σήμερα!
Paytor Δημοσ. 20 Ιουλίου 2006 Μέλος Δημοσ. 20 Ιουλίου 2006 Αυτο που επίσης προσπαθώ να κάνω είναι να υπολογίσω συντελεστές Fourier της εικόνας που ανοίγω και στέλνω στην βάση.Αρχικά υπολογίζω τα values (RGB) με τον εξής τρόπο.Εστω πίνακας int values [Ν][Μ] ακεραίων τιμών και int i, j δύο ακέραιες μεταβλητές τοτε τα RGB Values θα είναι values [j] = Image1->Canvas->Pixels[j] και αυτο με μια for πριν, ετσι ώστε να πέρνει ολα τα pixel της εικόνας. Το επόμενο βήμα ειναι ο υπολογισμός των συντελεστών fourier αλλα όχι ολόκληρης της εικόνας μόνο κάποιων.Αυτο πρέπει να γίνει κυκλικά, ξεκινώντας απο το κέντρο της εικόνας και μετα δεξιόστροφα ή αριστερόστροφα.Αυτο είναι και το μεγαλυτερο πρόβλημα.Καμία ιδέα??? Απ'ότι θα καταλάβατε αυτα τα πράγματα δεν τα κάνω για να περάσει η ώρα αλλα ειναι η διπλωματική που έχω να κάνω(Image Comparer).
Paytor Δημοσ. 20 Ιουλίου 2006 Μέλος Δημοσ. 20 Ιουλίου 2006 Συμληρωματικά για να υπολογίσω τους συντελεστές αυτούς θα χρησιμοποιήσω την βιβλιοθήκη FFTW(Fast Fourier Transform) καλώντας μια συνάρτηση απο εκεί.Το μόνο δύσκολο είναι αυτό που αναφέρω παραπάνω->Κυκλικά δεξιόστροφα η αριστερόστροφα αρχιζοντας απο το κέντρο της εικόνας(κεντρικό pixel).
Directx Δημοσ. 20 Ιουλίου 2006 Δημοσ. 20 Ιουλίου 2006 Για αρχή μπορείς να δεις την ρουτίνα CenterPoint η οποία επιστρέφει το κέντρο ενός ορθογώνιου (TRect) σε μορφή Y,X (TPoint), οπότε σε πρώτη φάση βρίσκεις το κέντρο του pixel-map που σε ενδιαφέρει.
Paytor Δημοσ. 20 Ιουλίου 2006 Μέλος Δημοσ. 20 Ιουλίου 2006 Ωραία σκέψη η ρουτίνα.Θα το χρησιμοποιήσω.Εγω ειχα σκεφτεί να διαιρέσω /2 τα Height και Width της εικόνας που ανοίγω. Καμία ιδέα για το πως θα παίρνω τιμές κυκλικά???Ειχα σκεφτεί με χρονόμετρο(timer) να υπολογίζω συγκεκριμένα pixel.Για να γίνει αυτο ομως θα χρειαστούν πολλές γραμμές κώδικα οι οποίες θα ισχύουν γαι την συγκεκριμένη εικόνα.Για μεγαλύτερη (εικόνα) οι τιμές που θα παίρνω θα είναι λίγες. Είναι δύσκολο σημείο το ξέρω.Οποιαδήποτε σκέψη είναι καλοδεχούμενη!
Paytor Δημοσ. 20 Ιουλίου 2006 Μέλος Δημοσ. 20 Ιουλίου 2006 Μία λιγο άσχετη ερώτηση.Κανένα καλό site με προγραμματισμό ξέρουμε?Εχω μπει μέχρι τώρα στα codeproject και planetsourcecode αλλα δεν ενθουσιάστηκα!Γενικά πάνω σε C++Builder δεν υπάρχει πολύ υλικό στο internet.
jimys18 Δημοσ. 4 Οκτωβρίου 2008 Δημοσ. 4 Οκτωβρίου 2008 ρε παίδες...απο που κατεβασατε το C++ Builder 6?...δεν το βρίσκω
Directx Δημοσ. 5 Οκτωβρίου 2008 Δημοσ. 5 Οκτωβρίου 2008 Γιατί δεν δοκιμάζεις την νόμιμη freeware έκδοση του (Turbo C++ Explorer) από εδώ: http://turboexplorer.com/cpp
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.