我正在编写一个应用程序来生成目录的“图像摘要”。图像摘要是一个 HTML 文档,其中包含一个包含该目录图像的表格。我正在尝试使用 StreamWriter 创建 HTML 文档。我希望每行 ( <tr>
) 包含 6 张图像。我怎样才能做到这一点?我已经搜索过,找不到有用的东西。
问问题
272 次
3 回答
1
凌乱的例子..但有效(我假设您不是从 ASP.NET 执行此操作,正如其他人所假设的那样,因为您使用的是 a StreamWriter
):
static void renderHTML(string folder, string outputFile, int imagesPerRow, params string[] extensions) {
string[] images = Directory.GetFiles(folder);
using (var sw = new StreamWriter(File.OpenWrite(outputFile))) {
sw.WriteLine("<!html><head><title>Example</title></head><body><table>");
int counter = 0;
sw.Write("<tr>");
foreach (string image in images.Where(x => extensions.Any(y => x.Contains(y)))) {
if (counter == imagesPerRow) {
sw.Write("</tr>");
sw.Write("<tr>");
counter = 0;
}
sw.Write("<td style=\"border: 1px solid;\">");
sw.Write(string.Format("<img src=\"{0}\" />", image));
sw.Write("</td>");
counter++;
}
sw.Write("</tr></table></body></html>");
}
}
你可以这样称呼它:
renderHTML(@"C:\folder", @"C:\output.html", 6, new string[] { ".jpg", ".png", ".gif" });
于 2013-02-19T01:09:14.660 回答
1
我会使用ListView。这样的事情应该让你开始:
<asp:ListView runat="server" ID="ListView1" DataSourceID="SqlDataSource1">
<LayoutTemplate>
<table runat="server" id="table1" >
<tr runat="server" id="itemPlaceholder" ></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr runat="server">
<td runat="server">
<asp:Image ID="Image1" runat="server" ImageUrl='<%#Eval("ImageUrl") %>' />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
这只会为每一行数据创建一个带有单个 td 的 tr。您显然想用图像创建六个 td,而不仅仅是一个。
于 2013-02-19T01:03:41.913 回答
1
在我看来,最简单的方法是从Directory.GetFiles()开始。这将返回一个string[]
文件路径。
从那里,您可以将该集合绑定到中继器。有关显示每行 n 个元素的巧妙方法,请参阅此问题的答案。该线程中还有一篇文章的链接,该链接显示了如何使用 ListView 进行操作。
于 2013-02-19T01:04:27.233 回答