ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【IDL】如何保存IDL绘制的图像或图形

2022-06-08 12:35:53  阅读:304  来源: 互联网

标签:OBJ SAVEDIFFERENTIMAGE 绘制 IDL winSize type NEW 图形 data


IDL进行可视化时绘制方式有直接图形法、对象图形法;显示有灰度显示、伪彩色显示、真彩色显示;文件保存又分为jpg、bmp、tif等各个格式,组合起来应用还真让人有点儿头疼。

下面对常用绘图及保存方式进行了总结,依次在显示了直接图形法下绘制灰度、伪彩色图像;对象图形法下绘制灰度、彩色图像;同时将其保存为jpg、bmp和tiff文件。

;保存为图像文件
;windowID-图像显示窗体ID
;windowDims-图像显示窗体大小
;imageFile-保存结果文件名
;type - 保存文件类型,默认为jpg
;    1:JPG;  2:bmp;  3:tiff
PRO SAVEDIFFERENTIMAGE, windowID,windowDims, imageFile,type=type
  ;置顶为当前显示
  WSET,windowID
  ;拷屏操作
  data = TVRD(0,0,windowDims[0],windowDims[1],/true)
  CASE type OF
    1: WRITE_JPEG, imageFile, data,/true, quality=100
    2: WRITE_BMP,imageFIle,data,/RGB
    3: WRITE_TIFF,imageFile, data,ORIENTATION =4
    ELSE:
  ENDCASE
 
END

;保存显示的图形
PRO TESTSAVEIMAGE
  winSize = [420,420]
  ;直接图形法
  data = DIST(400)
  ;灰度绘制显示
  DEVICE,decomposed =1
  WINDOW,1,xsize = winSize[0],ysize = winSize[1]
  TV,data
  ;直接保存为jpeg
  SAVEDIFFERENTIMAGE,1,winSize, 'c:\temp\1.jpg',/type
  ;直接保存为tiff
  SAVEDIFFERENTIMAGE,1,winSize, 'c:\temp\1.bmp',type =2
  ;直接保存为bmp
  SAVEDIFFERENTIMAGE,1,winSize, 'c:\temp\1.tif',type =3
 
  ;伪彩色显示
  DEVICE,decomposed =0
  LOADCT,5
  WINDOW,2,xsize = winSize[0],ysize = winSize[1]
  TV,data
  ;直接保存为jpeg
  SAVEDIFFERENTIMAGE,2,winSize, 'c:\temp\2.jpg',/type
  ;直接保存为tiff
  SAVEDIFFERENTIMAGE,2,winSize, 'c:\temp\2.bmp',type =2
  ;直接保存为bmp
  SAVEDIFFERENTIMAGE,2,winSize, 'c:\temp\2.tif',type =3
 
  ;对象图形法-灰度图像
  oWindow = OBJ_NEW('IDLgrWindow',dimension = winSize,$
    title ='灰度图像')
  oView = OBJ_NEW('IDLgrView',viewPlane_Rect = [0,0,winSize])
  oModel= OBJ_NEW('IDLgrModel')
  oImage= OBJ_NEW('IDLgrImage',DIST(400))
  ;层次体系与绘制
  oModel->ADD,oImage
  oView->ADD,oModel
  oWindow->SETPROPERTY, graphics_tree = oView
  oWindow->DRAW
  ;
  oPrint = oWindow.READ()
  oPrint->GETPROPERTY, data = data
  HELP,data
  ;后面保存不写了,与SAVEDIFFERENTIMAGE中tvrd后结果一样;
 
  ;对象图形法-伪彩色图像
  oWindow1 = OBJ_NEW('IDLgrWindow',dimension = winSize,$
    title ='伪彩色图像')
  oView1 = OBJ_NEW('IDLgrView',viewPlane_Rect = [0,0,winSize])
  oModel1= OBJ_NEW('IDLgrModel')
  ;颜色表
  oPalette = OBJ_NEW('IDLgrPalette')
  oPalette.LOADCT,5
  oImage1= OBJ_NEW('IDLgrImage',DIST(400),PALETTE = oPalette)
  ;层次体系与绘制
  oModel1->ADD,oImage1
  oView1->ADD,oModel1
  oWindow1->SETPROPERTY, graphics_tree = oView1
  oWindow1->DRAW
  ;
  oPrint = oWindow.READ()
  oPrint->GETPROPERTY, data = data
  HELP,data
;后面保存不写了,与SAVEDIFFERENTIMAGE中tvrd后结果一样;
 
END

标签:OBJ,SAVEDIFFERENTIMAGE,绘制,IDL,winSize,type,NEW,图形,data
来源: https://www.cnblogs.com/enviidl/p/16355188.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有