Görüntü belgelerini mongoDB'ye kaydetmek istiyorum.
Java kullanıyorum.Java kullanarak mongoDB'ye görüntüler nasıl eklenir?
Herhangi bir bağlantı veya öneriniz için teşekkür ederiz.
Görüntü belgelerini mongoDB'ye kaydetmek istiyorum.
Java kullanıyorum.Java kullanarak mongoDB'ye görüntüler nasıl eklenir?
Herhangi bir bağlantı veya öneriniz için teşekkür ederiz.
Resimler gibi ikili verileri depolamak için GridFS'u kullanabilir veya kendi gerçekleştirme sürecinizi gerçekleştirebilirsiniz; driver'u indirin ve src/test/com/mongodb/gridfs/GridFSTest.java
'a bakın;)
Düzenleme: Bugün şanslısınız! Sizin için eksiksiz bir kod hazırladım;) Enjoy! küçük (< 1mb) için
package mongodb.testing.java;
import com.mongodb.*;
import com.mongodb.gridfs.*;
import java.io.*;
public class Main {
public static byte[] LoadImage(String filePath) throws Exception {
File file = new File(filePath);
int size = (int)file.length();
byte[] buffer = new byte[size];
FileInputStream in = new FileInputStream(file);
in.read(buffer);
in.close();
return buffer;
}
public static void main(String[] args) throws Exception {
//Load our image
byte[] imageBytes = LoadImage("C:/Temp/bear.bmp");
//Connect to database
Mongo mongo = new Mongo("127.0.0.1");
String dbName = "GridFSTestJava";
DB db = mongo.getDB(dbName);
//Create GridFS object
GridFS fs = new GridFS(db);
//Save image into database
GridFSInputFile in = fs.createFile(imageBytes);
in.save();
//Find saved image
GridFSDBFile out = fs.findOne(new BasicDBObject("_id" , in.getId()));
//Save loaded image from database into new image file
FileOutputStream outputImage = new FileOutputStream("C:/Temp/bearCopy.bmp");
out.writeTo(outputImage);
outputImage.close();
}
}
Eh, AFAIK, görüntüleri mongodb
depolayamazsınız, görüntülerin bağlantılarını saklayabilirsiniz. Ve ben bunu söylediğim kadar yüksek değilim, eğer görüntüler küçükse, 100x100 px gibi, U imajı ikili olarak depolamayı ve baskı ve imajı anında deneyebilir. Ancak, görüntüleri işlemek biraz zaman alacaktır ve bu yüzden bağlantıyı kaydetmenizi ve sadece bu görüntüyü getirmenizi ve dinamik olarak doldurmanızı öneririm.
Daha büyük ikili nesneleri depolamak için GridFS'yi kullanabilirsiniz. Eğer mongodb yeni olduğunuz
, bir göz atın:
Ayrıca her zaman SO, ben üzerinde sorabilir ayrıca mongoDB için yeni ve birlikte bir acemi yardımcı olur: D
GridFS dosyasını düz bir belgeye nasıl bağlar mongodb. Diyelim ki, büyük bir resim yüklüyorum ve onu GridFS'de saklıyorum. Herhangi bir koleksiyondaki dosyanın diğer detaylarını bir belgede saklıyorum. Belgeyi koleksiyondan okuduğumda ilişkili resmi nasıl alabilirim ??? –
Bunu yapmak için herhangi bir API yöntemi olup olmadığını bilmiyorum, her iki koleksiyonda bir alan oluşturarak, aynı değerlerle, bunlar arasında bir bağlantı yaratırsınız. Dolayısıyla, ilk koleksiyondaki değere rastladığınızda, jsut görüntü koleksiyonunu değerle sorgular ve karşılık gelen görüntüye rastlarsınız. Kodunuz için – theTuxRacer
görüntüleri bir ikili alanda depolayarak öneririm (byte [] java); Daha büyük dosyalarınız varsa GridFS daha iyi çalışır.
Belgelerime doğrudan basit bir ikili alan kullanarak birçok küçük resim kaydediyorum.
POJO'larımı saklamak için Morphia'yı (http://code.google.com/p/morphia) kullanırım.
Görüntülerin bir çoğunu mongo'da saklayacağım. Her iki küçük resim ve sıradan boyut. Pojo benim için gerekli mi ?? –
Bana Mongo'daki görüntüleri nasıl temsil ettiğinizi söyler misiniz? gibi, {"x": 1, "y": 2} görüntüleri nasıl temsil ediyorsunuz ???? –
Resimlerinizi nasıl depolarsınız? Hepsi bir arada mı? veya bir koleksiyondaki ayrı belgeler mi?veya "{" name ":" Tamil "," age ": 23," Images "{" image1 ": 123.jpg," image2 ": abc.jpg gibi görünen bir belgeye birden çok görüntü kaydetmek istiyorsam }} 'java ile nasıl yapmalıyım –
teşekkürler. Aynı süreç için bir kod da yaptım. Ama seninki benimkinden basit! –
Yani, bir html dosyasına yazmak için sunucudaki resim konumunu HTML'ye gönderir misiniz? – Jeff
Özellikle 'LoadImage' yöntemi için çok teşekkür ederim. –