2016-08-03 7 views
1

私はmongoDBを使い慣れているので、C#/ SQL Server Windows AppをDBとして使用したいのですが、私のプログラムはコンソールからスクリーンショットを取り込み、 C#ImageオブジェクトとそれをSqlに挿入するImage type、 私はMongoDBでそれをどうやって行うのですか?画像は小さいです 私はSQLから読み込んだ小さなプログラムをMongoDBのSQLイメージタイプが文字列になる)、MongoDBから読み込み、それをピクチャボックスに表示しようとすると、メモリストリームにエラーが発生します。これはエラーです。プログラムのコードが続きます。 "パラメータが無効です。"C#ImageオブジェクトをMongoDBに挿入する方法

public partial class Form1 : Form 
{ 
    VideoEntities vid = new VideoEntities(); 
    public Form1() 
    { 
     InitializeComponent(); 
     connectToMongo(); 
    } 
    public void connectToMongo() 
    { 
     Utilitys util = new Utilitys(); 
     var con = "mongodb://127.0.0.1"; 
     MongoClient client = new MongoClient(con); 
     var db = client.GetDatabase("Video"); 
     ObjectResult<getFrame_Result> frame; 
     List<getFrame_Result> frameList; 
     frame = vid.getFrame(50604803); 
     frameList = frame.ToList(); 

     string jsonStr = jsonStr = util.deserialze(frameList[0]); 
     //   jsonStr = "{Frame:" + jsonStr + "}"; 
     jsonStr = jsonStr.Replace("[", "{"); 
     jsonStr = jsonStr.Replace("]", "}"); 

     var frameCollection = db.GetCollection<BsonDocument>("Frame"); 
     var oneFrame = BsonDocument.Parse(jsonStr); 
     frameCollection.InsertOne(oneFrame); 

     Byte[] data = new Byte[0]; 

     var collection = db.GetCollection<BsonDocument>("Frame"); 
     var filter = Builders<BsonDocument>.Filter.Eq("id", 50604803); 
     var result = collection.Find(filter).ToList(); 

     string img = (string)result[0]["Frame"]; 
     data = Encoding.ASCII.GetBytes(img); 
     MemoryStream mem = new MemoryStream(data); 
     pictureBox.Image = Image.FromStream(mem); 

    } 
} 

イメージデータを正しく挿入してバイナリデータにする方法はありますか?

答えて

1

は私が最終的にそれが動作するようになった、これはコードです:

public partial class Form1 : Form 
{ 
    VideoEntities vid = new VideoEntities(); 
    public Form1() 
    { 
     InitializeComponent(); 
     connectToMongo(); 
    } 
    public void connectToMongo() 
    { 
     Utilitys util = new Utilitys(); 
     var con = "mongodb://127.0.0.1"; 
     MongoClient client = new MongoClient(con); 
     var db = client.GetDatabase("Video"); 
     ObjectResult<getFrame_Result> frame; 
     List<getFrame_Result> frameList; 
     frame = vid.getFrame(50604803); 
     frameList = frame.ToList(); 

     **var frameCollection = db.GetCollection<getFrame_Result>("Frame");** 
     frameCollection.InsertOne(frameList[0]); 

     Byte[] data = new Byte[0]; 

     var collection = db.GetCollection<BsonDocument>("Frame"); 
     var filter = Builders<BsonDocument>.Filter.Eq("_id", 50604803); 
     var result = collection.Find(filter).ToList(); 
     data = (Byte[]) result[0]["Frame"]; 
     MemoryStream mem = new MemoryStream(data); 
     pictureBox.Image = Image.FromStream(mem); 

    } 
} 

変更は** **の間だけ、私はMongoDBのに挿入するために必要なクラスにGETコレクションにタイプを変更し、現在はそのされています画像を取得して画像として表示できるバイナリデータを挿入する

関連する問題