Я пытаюсь использовать библиотеку Imebra для отображения изображений DICOM в android. Я использую версию 5.0 библиотеки. Показанное растровое изображение полностью серого цвета, синтаксис передачи для изображения - 1.2.840.10008.1.2.1. Для другого поддерживаемого синтаксиса передачи, например JPEG, он работает нормально.
![enter image description here](https://i.stack.imgur.com/LCDT9.jpg)
Также я не могу добавить функциональность преобразования VOILUT, как упомянуто в документации. Она дает ошибку, которая не найдена для VOILUT.
![enter image description here](https://i.stack.imgur.com/1vent.png)
Ниже приведен код Я использую, часть преобразования VOILUT дает конструктор не найден. если я удаляю часть преобразования VOILUT, все работает нормально, но для изображения с синтаксисом передачи 1.2.840.10008.1.2.1 оно показывает полностью серое изображение
private Bitmap fromDicom(String filePath, int frameNumber){
// have been applied).
Image dicomImage = loadedDataSet.getImageApplyModalityTransform(frameNumber);
// Use a DrawBitmap to build a stream of bytes that can be handled by the
// Android Bitmap class.
com.imebra.TransformsChain chain = new com.imebra.TransformsChain();
if( com.imebra.ColorTransformsFactory.isMonochrome(dicomImage.getColorSpace()))
{
// Retrieve the VOIs (center/width pairs)
com.imebra.VOIs vois = loadedDataSet.getVOIs();
if(!vois.isEmpty())
{
// Get the first VOI setting from the dataset
chain.addTransform(new VOILUT(vois.get(0)));
}
else
{
// The dataset does not have any VOI setting, find the optimal one
com.imebra.SWIGTYPE_p_imebra__VOIDescription voiDescription = VOILUT.getOptimalVOI(dicomImage, 0, 0, dicomImage.getWidth(), dicomImage.getHeight());
chain.addTransform(new VOILUT(voiDescription));
}
}
DrawBitmap drawBitmap = new DrawBitmap(chain);
Memory memory = drawBitmap.getBitmap(dicomImage, drawBitmapType_t.drawBitmapRGBA, 4);
// Build the Android Bitmap from the raw bytes returned by DrawBitmap.
Bitmap renderBitmap = Bitmap.createBitmap((int)dicomImage.getWidth(), (int)dicomImage.getHeight(), Bitmap.Config.ARGB_8888);
byte[] memoryByte = new byte[(int)memory.size()];
memory.data(memoryByte);
ByteBuffer byteBuffer = ByteBuffer.wrap(memoryByte);
renderBitmap.copyPixelsFromBuffer(byteBuffer);
// Update the image
return renderBitmap;
}
После изменения предложенного вами кода я не нахожу классов упомянутое
VOIDescription вместо этого я вижу класс SWIGTYPE_p_imebra__VOIDescription, если я использую этот класс
![enter image description here](https://i.stack.imgur.com/jeHoO.png)
Существует еще одна ошибка, недоступный метод getWidth () с vois.get (0) .getWidth
![enter image description here](https://i.stack.imgur.com/x3zPq.png)
Одна последняя ошибка. Я не вижу класса vois_t, вместо этого есть VOI класса, если VOI следует использовать
Спасибо за отклик