MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Четете данни от MongoDB (gridfs) чрез Matlab и Java драйвер

Никога не съм отговарял на нито един въпрос във форума, но се възползвах много, особено от stackoverflow, така че реших, че трябва да върна нещо поне веднъж. Тъй като горният проблем ме тормозеше вече почти два дни и най-накрая намерих решение, реших, че това ще бъде добра тема, за да върна нещо на общността.

Имах същия проблем с извличането на изображение (.png) от MongoDB/GridFS с Java драйвера. Първо, както е описано по-горе, трябва да извлечете файла Java обект:

    import com.mongodb.*;
    import com.mongodb.gridfs.*;

    mongoClient = MongoClient('server_name',27017);
    db = mongoClient.getDB('database_name');
    imgData = GridFS(db,'image_data');

Горната част от кода получава колекцията с данните за изображението. След това Java обектът с данни за изображение може да бъде извлечен:

    javaIObj = imgData.findOne('image_name.png');

Сега е необходим ByteArrayOutputStream, където потокът от данни може да бъде прехвърлен вместо файл:

    import java.io.ByteArrayOutputStream;

    baos = ByteArrayOutputStream();
    javaIObj.writeTo(baos);

Изходният поток отново трябва да бъде насочен към ByteArrayInputStream, който може да се използва за конструиране на ImageIO обект:

    import java.io.ByteArrayInputStream;
    import javax.imageio.ImageIO;    

    bais = ByteArrayInputStream(baos.toByteArray());
    jbi = ImageIO.read(bais);

Сега действителното изображение на Matlab като матрица може да бъде извлечено и показано:

    nrows = jbi.getHeight; ncols = jbi.getWidth;
    data = jbi.getData.getPixels(0,0,ncols,nrows,[]);
    matImg = reshape(data,ncols,nrows)';

    imagesc(matImg);

Не знам дали това е идеалното решение, но при мен свърши работа.

Наздраве!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meteor custom mongodb по време на разработка

  2. Spring Boot Data и MongoDB - Filter Subdocument Array Query

  3. Топ 5 предимства на споделения MongoDB хостинг

  4. изпълните само една от многото дублирани задачи със sidekiq?

  5. Текущият анализатор на URL низове е отхвърлен