主要内容

平铺Sim万博1manbetxulink图

此示例演示如何使用跨越多个页面的大型图表创建报表。

使用图像平铺创建报告

打开带有大型图表的模型。

模型=“slreportgen\u演示图\u大图”开放式系统(模型);

创建要拆分为平铺的大型图像文件。

imgFile=[model“.png”];印刷品(“-dpng”, [“-s”模型文件);

创建并打开报告。

%要创建Word报告,请将输出类型从“pdf”更改为“docx”。%要创建HTML报告,请将“pdf”更改为“HTML”或“HTML文件”%分别为多文件或单文件报告。rpt=slreportgen.report.report(“myreport2”,“pdf”);公开(rpt);

获取页面布局信息。

pageLayout=rpt.Document.CurrentPageLayout;pageSize=pageLayout.pageSize;pageMargins=pageLayout.pageMargins;

将页眉和页脚设置为0英寸以最大化空间。

页边距.页眉=“0英寸”;页边距。页脚=“0英寸”;

确定适合页面的图像平铺大小。最佳磁贴大小是页面大小减去页面边距、檐槽、页眉和页脚。另外,调整平铺高度以允许标题为0.5英寸。请注意,对于PDF文档,MATLAB Report Generator将1英寸定义为96像素。

dpi=96;units=mlreportgen.utils.units;tileHeight=units.toPixels(pageSize.Height,“决议”,新闻部)...-单位。toPixels(pageMargins.Top,“决议”,新闻部)...-单位。toPixels(pageMargins.Bottom,“决议”,新闻部)...-单位.toPixels(pageMargins.Header,“决议”,新闻部)...-单位.toPixels(pageMargins.Footer,“决议”,新闻部)...-单位.顶像素(“0.5英寸”,“决议”,dpi);tileWidth=单位.toPixels(pageSize.Width,“决议”,新闻部)...-单位。顶像素(pageMargins.Left,“决议”,新闻部)...-单位。toPixels(pageMargins.Right,“决议”,新闻部)...-单位.顶像素(页边距.边沟、,“决议”,新闻部);tileSize=[tileWidth tileHeight];

调用sliceImage本地函数(见下文)将大型图像文件切片为图像分片。

tiles=切片图像(imgFile,[tileWidth tileHeight]);

将磁贴图像添加到报告中。此外,还添加标题以指示磁贴图像相对于整个图像所属的位置。

对于i=1:numel(tiles)tile=tiles{i};formalImage=mlreportgen.report.formalImage(tile.File);formalImage.ScaleToFit=false;formalImage.Caption=sprintf('行:%d,列:%d',tile.Row,tile.Col);添加(rpt,formalImage);终止

生成并显示报告。

关闭(rpt);rptview(rpt);

定义切片图像局部函数

要将图像文件切片为平铺,请读入图像文件并将平铺大小的部分复制到多个图像文件中。

作用tiles=切片图像(imgFile,tileSize)%读取图像文件并确定行数和列数%请注意,图像数据是行主数据,其中行是%首先指定,然后指定列。img=imread(imgFile);imgSize=size(img);imgRows=imgSize(1);%像高imgCols=imgSize(2);%图像宽度tileNumRows=tileSize(2);%瓷砖高度tileNumCols=tileSize(1);%瓷砖宽度numCols=ceil(imgCols/tileNumCols);numRows=ceil(imgRows/tileNumRows);%预先分配磁贴数据结构。瓷砖=单元(1,numCols*numRows);%确定基本文件名以创建平铺图像文件名。[fPath,fName,fExt]=fileparts(imgFile);tileName=fullfile(fPath,fName);%遍历所有行和列。计数=0;对于rowIdx=1:numRows对于colIdx=1:numCols%确定要复制的开始和结束图像数据索引%进入平铺图像。在边缘处,结束索引为%行数和列数。rowStart=(rowIdx-1)*tileNumRows+1;rowEnd=rowStart+tileNumRows-1;colStart=(colIdx-1)*tileNumCols+1;colEnd=colStart+tileNumCols-1;如果(rowEnd>=imgRows)rowEnd=imgRows;终止nTileRows=行结束-行开始+1;如果(colEnd>=imgCols)colEnd=imgCols;终止nTileCols=colEnd-colStart+1;%将平铺图像数据复制到白色图像平铺上。tileImg=uint8(255*one(tileNumRows,tileNumCols,3));tileImg(1:nTileRows,1:nTileCols,:)=img(rowStart:rowEnd,...colStart:colEnd,:);%写出图像平铺。outFile=sprintf(“%s\u%d\u%d.%s”,tileName,rowIdx,colIdx,fExt);imwrite(tileImg,outFile);%创建平铺数据结构以描述平铺。count=count+1;tiles{count}=struct(...“文件”,outFile,...“行”,rowIdx,...“上校”,colIdx);终止终止终止