找回密码
 立即注册

QQ登录

只需一步,快速开始

sesan

高级会员

25

主题

103

帖子

1061

积分

高级会员

积分
1061

微信认证勋章

sesan
高级会员   /  发表于:2019-8-27 18:34  /   查看:6560  /  回复:15
codecs.Save(srcImage, destFileName, RasterImageFormat.Png, 0);
codecs.Save(srcImage, destFileName, RasterImageFormat.Jpeg, 0);
同样从DICOM取出来RasterImage用PNG格式就能看图片,用JPEG就看不了图片

15 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-8-27 21:40:41
沙发
请上传dicom文件以验证问题,这个肯定不是所有的都是这样的
回复 使用道具 举报
sesan
高级会员   /  发表于:2019-8-28 10:23:08
板凳
WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg";
            string str = @"D:\VM\7172bd16-a097-4a6c-bb52-ebac34a608aa.dcm";
            RasterImage srcImage = null;
            IDataCacheProvider dataCache = new DiskDataCacheProvider(new DiskDataCacheStorage(@"C:\Cache"));

            if (!string.IsNullOrEmpty(str))
            {
                using (var dicomSourceProxy = new DicomSourceProxy(dataCache))
                {



                    var query = new ViewImageQuery() { FileName = str, FrameNumber = 1, Rasterize = true };

                    try
                    {
                        srcImage = dicomSourceProxy.Load(query).Image;
                    }
                    catch
                    {
                        //ignored
                    }
                }
            }
            MemoryStream imageStream = new MemoryStream();
            RasterCodecs codecs = new RasterCodecs();
            codecs.Options.Jpeg.Save.QualityFactor = 2;
            codecs.Options.Jpeg.Save.Passes = -1;
            codecs.Save(srcImage, imageStream, RasterImageFormat.Jpeg, 8);

            return imageStream;
用WCF服务发布接口出去,用接口服务接收流 就能看到图片


           string str = @"D:\VM\7172bd16-a097-4a6c-bb52-ebac34a608aa.dcm";
          string destFileName = @"D:\VM\E.jpg";
            RasterImage srcImage = null;
            IDataCacheProvider dataCache = new DiskDataCacheProvider(new DiskDataCacheStorage(@"C:\Cache"));

            if (!string.IsNullOrEmpty(str))
            {
                using (var dicomSourceProxy = new DicomSourceProxy(dataCache))
                {



                    var query = new ViewImageQuery() { FileName = str, FrameNumber = 1, Rasterize = true };

                    try
                    {
                        srcImage = dicomSourceProxy.Load(query).Image;
                    }
                    catch
                    {
                        //ignored
                    }
                }
            }
            
            RasterCodecs codecs = new RasterCodecs();
            codecs.Options.Jpeg.Save.QualityFactor = 2;
            codecs.Options.Jpeg.Save.Passes = -1;
            codecs.Save(srcImage, destFileName , RasterImageFormat.Jpeg, 8);
但是我以文件的形式保存到本地这个Jpeg的格式图片就看不了
         

同样本地保存文件PNG或者其它格式都能看到
用这个保存RasterImageFormat.Png参数设置png你就能看到本地文件图片了
codecs.Save(srcImage, destFileName, RasterImageFormat.Png, 0);
换了好多dicom都是这个情况

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
sesan
高级会员   /  发表于:2019-8-28 10:42:47
地板
你试试这个DICOM或者你找几个DICOM试试

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
sesan
高级会员   /  发表于:2019-8-28 13:52:18
5#
不知道有没有表达不清楚的地方?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-8-28 15:45:32
6#
好的,我先测试一下看看问题的原因
回复 使用道具 举报
sesan
高级会员   /  发表于:2019-8-30 09:59:13
7#
您好验证有结果了吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-8-30 14:49:20
8#
在这里加入了你的代码来测试,可以正常查看,不知道和你的有什么不同

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
sesan
高级会员   /  发表于:2019-8-30 15:29:26
9#
你把代码加在这里,保存到本地图片就可以看?
回复 使用道具 举报
sesan
高级会员   /  发表于:2019-8-30 17:18:11
10#
QualityFactor 这个属性好像设置成0就看不了了 0不应该是无损的吗?还是无损需要什么特殊条件

https://www.leadtools.com/help/l ... -qualityfactor.html
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部