主要内容

瓷砖模型图万博1manbetx

这个例子展示了如何创建一个报告有一个很大的图,跨越多个页面。

创建报告图像块

打开一个模型图。

模型=“slreportgen_demo_big_diagram”;open_system(模型);

创建大型图像文件分成瓷砖。

imgFile =[模型“使用”];打印(“-dpng”,(“s”模型],imgFile);

创建和打开一个报告。

%创建一个报告,输出类型从“pdf”更改为“多克斯”。%创建一个HTML报告,“pdf”更改为“HTML”或“HTML文件%多文件或单个文件报告,分别。rpt = slreportgen.report.Report (“myreport2”,“pdf”);打开(rpt);

获取页面布局信息。

pageLayout = rpt.Document.CurrentPageLayout;页大小= pageLayout.PageSize;pageMargins = pageLayout.PageMargins;

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

pageMargins。头=“0”;pageMargins。页脚=“0”;

确定图像的瓷砖大小适合到页面中。最优瓷砖大小页面大小-页面边缘,排水沟,页眉和页脚。同时,调整瓷砖高度允许标题0.5英寸。注意,对于PDF文档,MATLAB报告生成器定义一寸等于96像素。

dpi = 96;单位= mlreportgen.utils.units;tileHeight = units.toPixels (pageSize.Height,“决议”dpi)units.toPixels (pageMargins.Top“决议”dpi)units.toPixels (pageMargins.Bottom“决议”dpi)units.toPixels (pageMargins.Header“决议”dpi)units.toPixels (pageMargins.Footer“决议”dpi)units.toPixels (“0.5”,“决议”,dpi);tileWidth = units.toPixels (pageSize.Width,“决议”dpi)units.toPixels (pageMargins.Left“决议”dpi)units.toPixels (pageMargins.Right“决议”dpi)units.toPixels (pageMargins.Gutter“决议”,dpi);tileSize = [tileWidth tileHeight];

调用sliceImage本地函数(见下文),大型图像文件切成图像块。

瓷砖= sliceImage (imgFile [tileWidth tileHeight]);

瓷砖图像添加到报告。同时,也表明添加标题瓷砖图像之间的关系属于整体形象。

i = 1:元素个数(瓷砖)瓷砖=瓷砖{};formalImage = mlreportgen.report.FormalImage (tile.File);formalImage。ScaleToFit = false;formalImage。标题= sprintf (行:% d,上校:% d '瓷砖。行,tile.Col);add (rpt, formalImage);结束

生成和显示报告。

关闭(rpt);rptview (rpt);

定义sliceImage本地函数

片一个图像文件到瓷砖,读取图像文件和tile-size部分复制到多个图像文件。

函数瓷砖= sliceImage (imgFile tileSize)%读入图像文件并确定行和列的数量%瓷砖。注意图像数据行,行%指定列第二。img = imread (imgFile);imgSize =大小(img);imgRows = imgSize (1);%的形象高度imgCols = imgSize (2);%图像宽度tileNumRows = tileSize (2);%瓷砖高度tileNumCols = tileSize (1);%瓷砖宽度numCols =装天花板(imgCols / tileNumCols);numRows =装天花板(imgRows / tileNumRows);% Preallocate瓦片数据结构。瓷砖=细胞(1,numCols * numRows);%确定基本文件名创建瓷砖图像文件名。[fPath、帧,fExt] = fileparts (imgFile);tileName = fullfile (fPath、帧);%遍历所有行和列。数= 0;rowIdx = 1: numRowscolIdx = 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 = rowEnd - rowStart + 1;如果(colEnd > = imgCols) colEnd = imgCols;结束nTileCols = colEnd - colStart + 1;%将瓷砖图像数据复制到一个白色瓷砖形象。tileImg = uint8 (255 * (tileNumRows tileNumCols 3));tileImg (1: nTileRows, 1: nTileCols:) = img (rowStart: rowEnd,colStart: colEnd:);%写出形象瓷砖。输出文件= sprintf (' % s_ % d_ % d % s ',rowIdx tileName colIdx fExt);imwrite (tileImg输出文件);%创建了瓷砖瓷砖的数据结构来描述。数=计数+ 1;瓷砖{数}=结构(“文件”输出文件,“行”rowIdx,“上校”,colIdx);结束结束结束