实现将.dcm格式图像转换为.jpg格式图像的完整攻略如下:
1. 安装必需的包
首先需要安装必要的Python库,包括pydicom
和pillow
:
pip install pydicom
pip install pillow
2. 加载dcm文件
使用pydicom
库的dcmread()
函数读取.dcm格式图像,将其作为一个对象存储到变量中:
import pydicom
dcm_data = pydicom.dcmread("example.dcm")
3. 将dcm文件转换为图像文件
使用PIL
库中的Image
模块将.dcm格式图像转换为.jpg格式图像:
from PIL import Image
from io import BytesIO
img = Image.fromarray(dcm_data.pixel_array)
byte_io = BytesIO()
img.save(byte_io, format='JPEG')
byte_io.seek(0)
在这里,我们先通过fromarray()
方法将.dcm格式图像转换为numpy.array
的形式。然后创建一个BytesIO
流对象,用于存储转换后的图像文件。最后使用save()
函数将图像保存到BytesIO
对象中,并将文件指针移回到文件开头。
4. 保存图像文件
使用Python的文件处理方法将图像文件写入一个.jpg格式的文件:
with open('example.jpg', 'wb') as f:
f.write(byte_io.read())
在这里,我们使用open()
函数以二进制打开一个.jpg格式的文件,并使用write()
方法将文件写入磁盘。
示例说明
示例一
假设我们有一个名为example.dcm
的文件位于当前工作目录下,包含.dcm格式的图像文件。以下代码将转换该文件并将其保存为一个名为example.jpg
的新文件:
import pydicom
from PIL import Image
from io import BytesIO
dcm_data = pydicom.dcmread("example.dcm")
img = Image.fromarray(dcm_data.pixel_array)
byte_io = BytesIO()
img.save(byte_io, format='JPEG')
byte_io.seek(0)
with open('example.jpg', 'wb') as f:
f.write(byte_io.read())
使用该代码,我们可以将example.dcm
转换为example.jpg
。
示例二
在下一个示例中,我们将使用glob
库获取一个目录中所有.dcm文件的文件名,并对其进行批量转换。如下所示:
import pydicom
from PIL import Image
from io import BytesIO
import glob
dir_path = '/path/to/dcm/files'
files_list = glob.glob(f'{dir_path}/*.dcm')
for file_path in files_list:
dcm_data = pydicom.dcmread(file_path)
img = Image.fromarray(dcm_data.pixel_array)
byte_io = BytesIO()
img.save(byte_io, format='JPEG')
byte_io.seek(0)
with open(f"{file_path[:-3]}jpg", 'wb') as f:
f.write(byte_io.read())
该代码获取位于/path/to/dcm/files
目录中所有.dcm文件的文件名,然后使用for
循环遍历每个文件并将其转换为.jpg格式文件保存在相同目录下。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用python实现.dcm格式图像转为.jpg格式 - Python技术站