/ / Vytvoriť viac HTML súborov z adresára obrázkov - php

Vytvoriť viac súborov HTML z adresára obrázkov - php

Mám veľký súbor technických ilustráciíže potrebujem mapovať oblasť a vytvoriť online manuál. Už som vytvoril základný motor na prepojenie každého súboru a navigáciu dopredu a dozadu. Ale vzhľadom na veľké množstvo obrázkov som chcel vytvoriť skupinu základných súborov HTML, ktoré by som potom mohol prejsť a upraviť príslušné sekcie.

Chcel som, aby som hľadal adresár(images / schematic /) a vytvoriť súbor HTML pre každý obrázok (imagefilename.png). Súbor by používal názov obrazu (imagefilename). Telo html súboru by bolo podobné ako nasledujúce.

    $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="/images/".$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> ";

Našiel som tento kód, ktorý zobrazil zoznam súborov a zistil, že je to "basename", ktoré odstraňuje názov adresára.

      <?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";
}?>

Ale nerozumiem, ako na to niečo urobiťkaždej návratovej hodnoty z vyhľadávania obrázkových súborov. Ako môžete pravdepodobne povedať, že mám malý na žiadnu myšlienku, pokiaľ ide o php, ale snažím sa. Ak by ma niekto mohol poukázať správnym smerom, vysvetľujúci, ako a prečo by som to ocenil.

Ok, mal som trochu prelomu. Tento kód funguje. Teraz by som to rád urobil. Návrhy na to, ako ju zlepšiť, sú viac než vítané.

      <?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="/images/.".$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")

?>

Dala som to dohromady z rôznychkonzultácie som našiel na celom webe. Chcel by som, aby zobrazoval len obrazové súbory, najlepšie .png a .jpeg. Môžem to preskočiť na súbor, ktorý existuje (myslím na ďalšiu líniu v prípade, že som oblast mapoval obrázky a je prepísaný.) Uvedomujem si, že to môže vyzerat nepríjemne, ale som úplný newb k tomu.

odpovede:

1 pre odpoveď č. 1

Ok, myslím, že sa mi to podarilo všetko pracovať, je to pre každého, kto sa snažia robiť niečo podobné z akéhokoľvek dôvodu, akékoľvek ďalšie návrhy alebo zlepšenia uvítali.

 <?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="/images/.".$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>");


?>

No to funguje, som si istý, že to nie je najkompaktnejší spôsob, ako to robiť, ale tam idete.


0 pre odpoveď č. 2

Dodaný kód vám dáva názov súboru. Stačí zmeniť linku.

echo basename($files[$i])."<br/>n";

a nahraďte ho niečím podobným.

echo "<img src="/images//images/schematic/" . basename($files[$i]) . ""></img><br />n";

To by potom prinieslo vaše obrázky jeden pod druhým.