我需要大量的技术插图来映射区域以形成在线手册。我已经制作了基本引擎,用于将每个文件链接在一起并向前和向后导航。但是由于我想要创建一组基本HTML文件的大量图像,然后我可以通过这些文件来编辑相关部分。
我想要的是搜索目录(images / schematic /)并为每个图像创建一个HTML文件(imagefilename.png)。该文件将使用图像的名称(imagefilename)。 html文件的主体类似如下。
$html='
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>'.$imageFileName.'</title>
</head>
<body>
<div id="image-holder">
<div class="img-title">changeMeLater</div>
<img src="'.$imageDir .$FullImageFileName.'" width="640" height="751" alt="'.$imageFileName.'-diagram" usemap="#mapFor-'.$imageFileName.'">
<map name="'.$imageFileName.'-imageMap" id="mapFor-'.$imageFileName.'">
</map>
</div>
<div id="partsDescription-tabContent" class="content"></div>
<div id="instructions-tabContent" class="content"></div>
<div id="notes-tabContent" class="content"></div>
<div id="stockControl-tabContent" class="content"></div>
</body>
</html> ';
我发现这段代码确实显示了文件列表,并发现它是删除目录名称的“basename”。
<?php
$directory = "./images/schematic/";
$directory = (!strstr($directory,"*") || $directory =="./" ) ? $directory."*" : $directory;
$files = glob($directory);
for($i=0;$i<sizeof($files) ; $i++){
echo basename($files[$i])."<br/>\n";
}?>
但我不明白如何对图像文件搜索中的每个返回值执行某些操作。你可能会告诉我,我不知道什么时候谈到PHP,但我正在努力。如果有人可以指出我正确的方向,解释我将如何以及为什么欣赏它。
好的,我有一点突破。这段代码确实有效。现在我想调整它。关于如何改进它的建议非常受欢迎。
<?php
$directory = "./images/schematic/";
$directory = (!strstr($directory,"*") || $directory =="./" ) ? $directory."*" : $directory;
$files = glob($directory);
for($i=0;$i<sizeof($files) ; $i++)
{
$fileTitle= basename($files[$i], ".png");
$imageSrc= $files[$i];
$html='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>'.$pageTitle.'</title>
</head>
<body>
<div id="image-holder">
<div class="img-title">'.$fileTitle.'</div>
<img src=".'.$imageSrc.'" width="640" height="751" style="border: none;" alt="'.$fileTitle.'-diagram" usemap="#mapFor-'.$fileTitle.'">
<map name="'.$fileTitle.'-imageMap" id="mapFor-'.$fileTitle.'">
<!-------------------------------- '.$pageTitle.' Mapping ------------------------------------->
</map>
</div>
<div id="partsDescription-tabContent" class="content"></div>
<div id="instructions-tabContent" class="content"></div>
<div id="notes-tabContent" class="content"></div>
<div id="stockControl-tabContent" class="content"></div>
</body>
</html>';
$myfile = fopen ('./newdirectory/'.$fileTitle.'.html', 'w') or die("Can not open file");
$outputFile = $html;
fputs($myfile, $outputFile);
fclose($myfile);
};
echo ("OK Files created")
?>
我通过网络上发现的各种教程将这些拼凑在一起。我希望它只查看图像文件,最好是.png和.jpeg。我可以让它跳过一个存在的文件(我想进一步下线,以防我有区域映射图像,它被覆盖。)我意识到这可能看起来很乱,但我是一个完整的新手。
答案 0 :(得分:1)
好的,我认为我设法让这一切都在这里工作,因为任何人都试图以任何理由做同样的事情,欢迎任何进一步的建议或改进。
<?php
$dir = opendir ("./images"); //the image directory to read
while (false !== ($file = readdir($dir))) {
if (strpos($file, '.png',1)) {
$fileTitle= basename($file, ".png");
$imageSrc= "./images/schematic/".$file;
$html='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>'.$fileTitle.'</title>
</head>
<body>
<div id="image-holder">
<div class="img-title">'.$fileTitle.'</div>
<img src=".'.$imageSrc.'" width="640" height="751" style="border: none;" alt="'.$fileTitle.'-diagram" usemap="#mapFor-'.$fileTitle.'">
<map name="'.$fileTitle.'-imageMap" id="mapFor-'.$fileTitle.'">
<!-------------------------------- '.$fileTitle.' Mapping ------------------------------------->
</map>
</div>
<div id="partsDescription-tabContent" class="content"></div>
<div id="instructions-tabContent" class="content"></div>
<div id="notes-tabContent" class="content"></div>
<div id="stockControl-tabContent" class="content"></div>
</body>
</html>';
$url= './DirectoryForHTMLfiles/'.$fileTitle.'.html';
$f=@fopen($url,"r"); //check to see if file already exists, if it does then close
if($f)
{
fclose($f);
$stat= ' existing'; // this is for the list of files displayed in your browser window simply displaying file exists
}
else {
$myfile = fopen ($url, 'w') or die("Can not open file"); // else if file does not exist create it
$outputFile = $html;
fputs($myfile, $outputFile);
fclose($myfile);
$stat= ' created'; // this is for the list of files displayed in your browser window simply displaying file created
}
echo '<a href="'.$url.'" target="_new">'.$fileTitle.'.html'.$stat.'</a><br/>'; //displays a link to each file hyperlink to page (opens in new window)
}
}
echo ('<br/><h2>Files created from shcematic image file folder.</h2>');
?>
嗯它有效,我相信这不是最优雅的方式,但你去了。
答案 1 :(得分:0)
提供的代码为您提供文件名。你只需要更改一行。
echo basename($files[$i])."<br/>\n";
并用类似的东西替换它。
echo "<img src='/images/schematic/" . basename($files[$i]) . "'></img><br />\n";
然后将图像输出到另一个之下。