wordpress去除下一页,网络营销中的seo是指,下列不能反应企业网站建立网络,注册域名之后怎么建网站背景#xff1a;预告了好久的几篇专栏博文一直没有整理好#xff0c;主要原因是早前希望搭建的WML服务器计划遇到了问题。起初以为参照DCMTK的官方文档wwwapp.txt结合前两天搭建的WAMP服务器可以顺利的实现WML服务#xff0c;借此就可以同时完成WEB PACS系列以及搭建Dicom W…背景预告了好久的几篇专栏博文一直没有整理好主要原因是早前希望搭建的WML服务器计划遇到了问题。起初以为参照DCMTK的官方文档wwwapp.txt结合前两天搭建的WAMP服务器可以顺利的实现WML服务借此就可以同时完成WEB PACS系列以及搭建Dicom WML服务器的两篇博文。可是在实际部署过程中发现了几个严重的问题一时无法解决。但是在搜索解决方案的时候偶然间找到了在DCMTK论坛上贴出来的用PHP对DCMTK工具包封装的文章。因此此篇博文在记录搭建WML遇到的问题的同时主要想向大家介绍一下这个简单的封装DCMTK工具包的PHP类并在前期搭建的WAMP服务器上给出示范实例。(PS也希望知道如何解决该问题的大神赶紧现身)问题按照DCMTK官方文档wwwapp.txt文件(http://support.dcmtk.org/docs/file_wwwapp.html)的说明搭建DICOM Basic WorklistManagement服务的前期准备工作已经基本完成前述的WEB PACS平台已经能够顺利提供HTTPD、CGI以及Perl解析的功能(具体可参见博文中给出的Perl示例http://blog.csdn.net/zssureqh/article/details/40516745)。但是按照wwwapp.txt文档指示拷贝wwwapps目录下的可执行文件(例如preplock、readoviw、readwlst、writwlst)时并未在编译后的工程中找到只看到了相应的.cc源码文件。wwwapp安装的相关资料搜索相关资料后发现柳北风儿前辈此前也遇到过该问题并向OFFIS的相关维护人员进行过咨询。前辈的说明博文地址是http://qimo601.iteye.com/blog/1701026OFFIS论坛的讨论地址是http://forum.dcmtk.org/viewtopic.php?f1t723hilitwwwapp.txt。尝试解决按照上述的说明确信应该是在编译DCMTK源码中间的某个环节出现了问题导致本应该顺利生成的几个exe文件丢失。官方论坛中的讨论是针对Linux环境下利用make工具来编译的情况该环境下在利用make安装的时候由make distclean指令来控制preplock、readoviw、readwlst、writwlst等可执行文件的清除。但是在Windows环境下用的是CMake来生成与VS对应的sln文件打开DCMTK.sln解决方案后并未找到如何设置才能编译生成上述可执行文件而且按照柳前辈的说法即使编译成功在Win7环境下同样缺少一个preplock.exe文件。至此该问题的解决就终止了到发文时刻还未找到很好的解决方法。PHP DICOM Class在浏览OFFIS论坛寻找上述问题的解决方案时无意点开了论坛中的“Third-Party DCMTK Applications”分支如下图所示该分论坛中介绍了众多DCMTK相关的应用开发其中有一项叫做“PHP DICOM Class“。其中作者Vedicveko给出了PHP Dicom Class类的设计初衷以及详细的使用说明说明文档网址为http://deanvaughan.org/wordpress/dicom-php-class/。下载源码(https://github.com/vedicveko/class_dicom.php/zipball/master)后打开class_dicom.php核心类文件可以看出作者通过使用PHP中的exec命令来对DCMTK对应的工具包进行了封装借助于PHP语言的优势使得DCMTK更易于网络化应用。Apache网络服务器与PHP之间的调用可以直接利用我们前面搭建的简易WEBPACS平台(该平台对于PHP的调用通过FastCGI来实现)然后通过结合PHP DICOM Class可以实现对dcm文件的大多数操作具体的实现如下。PHP DICOM Class的安装第一将DCMTK编译后的工具包统一放到指定位置例如我的本机地址为c:\dcmtk\bin修改class_dicom.php文件中的如下代码将TOOLKIT_DIR指向本机工具包目录c:\dcmtk\bin。define(‘TOOLKIT_DIR’, ‘C:/dcmtk/bin’); // CHANGE THIS IF YOU HAVE DCMTK INSTALLED SOMEWHERE ELSE第二借助前面搭建的WAMP服务在网站服务根目录(我本机为c:\wamp\www\)下新建class_dicom_php目录将下载的PHP DICOM Class源码文件直接拷贝到class_dicom_php目录下如下图所示第三开启wamp server服务在浏览器中输入http://localhost/class_dicom_php/examples/get_tags.php进行测试正常的话会输出dean.dcm文件的Tags标签信息如下图所示如上所示浏览器中看到的结果与利用dcmdump.exe工具查看的结果一致说明PHP DICOM Class已经顺利的安装到了WEB PACS平台中。【注】在实际运行过程中可能会出现错误原因是get_tags.php中使用的是$argv命令行变量来获得具体的dcm文件路径的但是在WEB PACS中我们只能通过GET或者POST方式传递参数到php脚本因此可修改get_tags.php中的参数获取方式或者直接将测试文件dean.dcm写入到文件路径变量中如下所示$file (isset($argv[1]) ? $argv[1] : ‘dean.dcm’);#原来代码为$file (isset($argv[1]) ? $argv[1] : ‘ ‘);修改后再次在浏览器中输入http://localhost/class_dicom_php/examples/get_tags.php就会顺利得到上述结果。示例向浏览器输出DCM图像数据1)添加dcm_to_bmp()函数虽然PHP DICOM Class只是简单的调用了DCMTK工具包来实现PHP对DICOM文件的操作但是由于DCMTK工具包的强大在目前我们简易的WEB PACS平台的并发数不大的情况下可以尝试直接利用PHP DICOM Class来实现前篇博文中将DCM文件的图像信息输出到浏览器的功能。查看class_dicom.php看到其中dicom_convert类中有关于JPEG到DCM的自由双向变换其源码中用到的是DCMTK工具包中的dcmj2pnm查看dcmj2pnm的帮助文档可知该工具也可实现DCM到bmp文件的转换因此决定对class_dicom.php中的dicom_convert类进行扩展添加dcm_to_bmp()函数具体代码如下### zssure 20141104function dcm_to_bmp() {$filesize 0;$this-jpg_file $this-file . ‘.bmp’;$convert_cmd BIN_DCMJ2PNM . ” ob ” . “\”” . $this-file . “\” \”” . $this-jpg_file . “\””;$out Execute($convert_cmd);if(file_exists($this-jpg_file)) {$filesize filesize($this-jpg_file);}return($this-jpg_file);}dcm_to_bmp()不同于dcm_to_jpg()的主要地方是dcmj2pnm的指令参数不同bmp文件用到的是ob参数dcmj2pnm本身可以生成多种格式的bmp图像如下图所示当然也可以通过识别dcm具体的图像标签来自动设定保存的bmp格式在自适应时刻用到的主要标签如下图所示2)实例测试编写dcm_to_bmp的测试php代码如下#!/usr/bin/php## Creates a jpeg and jpeg thumbnail of a DICOM file#require_once(‘../class_dicom.php’);$file (isset($argv[1]) ? $argv[1] : ‘dean.dcm’);if(!$file) {print “USAGE: ./dcm_to_jpg.php \n”;exit;}if(!file_exists($file)) {print “$file: does not exist\n”;exit;}$job_start time();$d new dicom_convert;$d-file $file;$d-dcm_to_bmp();#$d-dcm_to_tn();#system(“ls -lsh $file*”);$job_end time();$job_time $job_end – $job_start;#print “Created BMP and thumbnail in $job_time seconds.\n”;header(“Content-type:image/bmp\n\n”);$jpgName$d-jpg_file;$fpfopen($jpgName,”r”);fpassthru($fp);exit;?在利用dcmj2pnm将dcm转换成bmp文件后就可以直接利用前面博文中PHP输出图像到浏览器的代码来输出结果在浏览器中输入http://localhost/class_dicom_php/examples/dcm_to_bmp.php顺利得到dean.dcm测试文件的图像信息如下图所示至此利用PHP DICOM Class快速便捷地实现了将dcm文件的图像信息输出到浏览器的功能。【注】在上述dcm_to_bmp.php测试文件中需要将#system(“ls -lsh $file*”);语句注释掉否则在windows的WAMP环境下会出现问题。学习DCMTK的资料原来只是利用OFFIS的论坛(http://forum.dcmtk.org/index.php)来搜索使用DCMTK过程中遇到的各种错误从来没有仔细全面的浏览过OFFIS论坛的各个部分通过今天的亲身经历发现在OFFIS论坛的DCMTK项目下的【Third-PartyDCMTK Applications】部分也是一个知识宝藏里面包含了各种牛人利用DCMTK开发的工具大多都是开源的相关文档也很详细以后可以作为重点学习的资料。下面给出几个我觉得很值得学习的链接供大家参考http://forum.dcmtk.org/viewtopic.php?f19t1225一个开源的DICOM文件浏览器功能丰富http://forum.dcmtk.org/viewtopic.php?f19t2919我们上文提到的PHP DICOM Class作者发的帖子感谢大神的无私http://medicalanonymization.olympe.in/index.html一位优秀的DCMTK程序员实习期间项目的开源站有对DCMTK使用的详细介绍(后续有时间就逐个翻译)http://forum.dcmtk.org/viewtopic.php?f19t2373一个在Windows系统下的DICOM文件浏览器