DICOM -医学中的数字成像和通信,是医学成像中处理、存储、打印和传输信息的标准。它包括文件格式定义和网络通信协议。
我想在我的ios项目中编写.dcm文件。请给我提供任何链接。
发布于 2017-01-02 12:28:23
Update:Imebra4.2包含完整的ObjectiveC包装器,它们也与Swift一起工作。
原始alswer:伊梅布拉允许在iOS上读取和生成DICOM文件。
它也为iOS和OS-X编译,它是用C++编写的,但如果文件扩展名是.mm而不是.m,则可以与ObjectiveC方法一起使用。
自从4.0.8.1版以来,Imebra还包含了很少的objectiveC帮手,可以将C++字符串转换为NSStrings (反之亦然),并从Imebra映像中提取UIImage (或NSImage)。
如何在Imebra (详细说明)中生成DICOM文件:
创建一个空数据集:
// We specify the transfer syntax and the charset
std::string transferSyntax(imebra::NSStringToString(@"1.2.840.10008.1.2.1"));
std::string encoding(imebra::NSStringToString(@"ISO 2022 IR 6"));
imebra::DataSet dataSet(transferSyntax, encoding);创建一个图像,将其放入dataset:
// Create a 300 by 200 pixel image, 15 bits per color channel, RGB
std::string colorSpace(imebra::NSStringToString(@"RGB"));
imebra::Image image(300, 200, imebra::bitDepth_t::depthU16, colorSpace, 15);
{
std::unique_ptr<WritingDataHandlerNumeric> dataHandler(image.getWritingDataHandler());
// Set all the pixels to red
for(std::uint32_t scanY(0); scanY != 200; ++scanY)
{
for(std::uint32_t scanX(0); scanX != 300; ++scanX)
{
dataHandler->setUnsignedLong((scanY * 300 + scanX) * 3, 65535);
dataHandler->setUnsignedLong((scanY * 300 + scanX) * 3 + 1, 0);
dataHandler->setUnsignedLong((scanY * 300 + scanX) * 3 + 2, 0);
}
}
// dataHandler will go out of scope and will commit the data into the image
}
dataSet.setImage(0, image);保存数据集
std::string fileName(NSStringToString(@"path/to/file.dcm"));
imebra::CodecFactory::save(dataSet, fileName, imebra::codecType_t::dicom);(disclusure:我是Imebra的作者)
https://stackoverflow.com/questions/41424858
复制相似问题