Cプログラム

home戻る


写真のファイル名からHTMLを制作するCプログラムです。 よかったら参考にして下さい。
(動作を保証するものではありませんので、利用する際は自己責任でお願いします。)

[利用方法]
 1)下記例では写真pict0007.jpg, pict0023.jpg, pict0054.jpgがあるものとします。
 2)これらをjpegフォルダの中に入れます。
 3)これらのサムネイルをファイル名は同じでminiフォルダの中に入れます。
 4)下記/**ここから**/〜/**ここまでの間を変える**/の中を書き替えます。
 5)実行するとHTMLファイルpict0007.htm, pict0023.htm, pict0054.htmができます。
 6)あとはindex.htmからpict0007.htmにリンクするだけ。

#include	<stdio.h>

#define	EOL	"\n"
#define	N_FILE	64
#define	N_TITLE	128
#define	N_PHOTO	(sizeof(photo) / sizeof(struct s_photo))
#define	N_SMALL	5

struct s_photo {
	char	file[N_FILE];
	int	lx, ly, sx, sy;
	char	title[N_TITLE];
};

/** ここから **/

#define	S_HOME	"山の思い出" /** ホームページのタイトル **/
#define	S_TITLE	"花のページ" /** ページのタイトル **/

struct s_photo	photo[] = {
	/** 写真のファイル名, 横幅, 高さ, サムネイルの横幅, 高さ, 写真の題 **/
	{"pict0007", 400, 300, 28, 21, "梅"},
	{"pict0023", 300, 400, 21, 28, "桜"},
	{"pict0054", 400, 300, 28, 21, "チューリップ"},
};

/** ここまでの間を変える **/

/** 以下、HTML部分を適当に変えてもOK **/

int	main(int argc, char *argv[])
{
	int	i, j;
	char	file[N_FILE];
	FILE	*fp;

	printf("%d\n", N_PHOTO);

	for (i = 0; i < N_PHOTO; i++) {
		sprintf(file, "%s.htm", photo[i].file);
		printf("%s\n", file);
		if ((fp = fopen(file, "w")) == NULL) {
			fprintf(stderr, "Can't open %s.\n", file);
			break;
		}

		fprintf(fp, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">" EOL);
		fprintf(fp, "<html lang=\"ja\">" EOL);
		fprintf(fp, "<head>" EOL);
		fprintf(fp, "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=SHIFT_JIS\">" EOL);
		fprintf(fp, "<meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\">" EOL);
		fprintf(fp, "<title>" S_TITLE "</title>" EOL);
		fprintf(fp, "<script language=\"JavaScript\" type=\"text/javascript\"><!--" EOL);
		fprintf(fp, "function popJump(selOBJ)" EOL);
		fprintf(fp, "{" EOL);
		fprintf(fp, " location.href = selOBJ.options[selOBJ.selectedIndex].value;" EOL);
		fprintf(fp, "}" EOL);
		fprintf(fp, "// --></script>" EOL);
		fprintf(fp, "</head>" EOL);
		fprintf(fp, "<body bgcolor=\"#FFFFFF\" text=\"#000000\" link=\"#0000FF\" vlink=\"#800080\" alink=\"#FF0000\">" EOL);
		fprintf(fp, "" EOL);
		fprintf(fp, "<div align=\"center\">" EOL);
		fprintf(fp, "<table>" EOL);
		fprintf(fp, "" EOL);
		fprintf(fp, "<tr>" EOL);
		fprintf(fp, "<td></td>" EOL);
		fprintf(fp, "<td rowspan=2 align=\"center\" valign=\"top\" width=480 nowrap>" EOL);

		if (i == 0) {
			fprintf(fp, "back" EOL);
		} else {
			fprintf(fp, "<a href=\"%s.htm\">back</a>" EOL,
				photo[i - 1].file);
		}
		fprintf(fp, "<a href=\"index.htm\">index</a>" EOL);
		if (i == N_PHOTO - 1) {
			fprintf(fp, "next" EOL);
		} else {
			fprintf(fp, "<a href=\"%s.htm\">next</a>" EOL,
				photo[i + 1].file);
		}

		fprintf(fp, "<br><br>" EOL);
		fprintf(fp, "<table border=1><tr><td nowrap>" EOL);
		fprintf(fp, "<img src=\"jpeg/%s.jpg\" width=%d height=%d alt=\"\"></td></tr></table>" EOL,
			photo[i].file, photo[i].lx, photo[i].ly);
		fprintf(fp, "<br>" EOL);
		fprintf(fp, "%s<br>" EOL,
			photo[i].title);
		fprintf(fp, "<br>" EOL);

		if (i == 0) {
			fprintf(fp, "back" EOL);
		} else {
			fprintf(fp, "<a href=\"%s.htm\">back</a>" EOL,
				photo[i - 1].file);
		}
		fprintf(fp, "<a href=\"index.htm\">index</a>" EOL);
		if (i == N_PHOTO - 1) {
			fprintf(fp, "next" EOL);
		} else {
			fprintf(fp, "<a href=\"%s.htm\">next</a>" EOL,
				photo[i + 1].file);
		}

		fprintf(fp, "</td>" EOL);
		fprintf(fp, "</tr>" EOL);
		fprintf(fp, "" EOL);
		fprintf(fp, "<tr>" EOL);
		fprintf(fp, "<td align=\"center\" valign=\"top\" nowrap>" EOL);
		fprintf(fp, "<table border=1 cellspacing=0><tr><td align=\"center\" nowrap>" EOL);
		fprintf(fp, "<big><b>" S_HOME "</b></big></td></tr></table>" EOL);
		fprintf(fp, "<br>" EOL);
		fprintf(fp, "<small>" EOL);
		fprintf(fp, S_TITLE "<br><br>" EOL);
		fprintf(fp, "</small>" EOL);
		fprintf(fp, "" EOL);
		fprintf(fp, "<form action=\"#\">" EOL);
		fprintf(fp, "<select onChange=\"popJump(this)\">" EOL);

		for (j = 0; j < N_PHOTO; j++) {
			fprintf(fp, "<option value=\"%s.htm\"%s>%d %s" EOL,
				photo[j].file, (j == i) ? " selected" : "", j + 1, photo[j].title);
		}

		fprintf(fp, "</select>" EOL);
		fprintf(fp, "</form>" EOL);
		fprintf(fp, "" EOL);
		fprintf(fp, "<table>" EOL);

		for (j = 0; j < N_PHOTO; j++) {
			if (j % N_SMALL == 0) {
				fprintf(fp, "<tr>" EOL);
			}
			fprintf(fp, "<td align=\"center\" width=30 height=30><a href=\"%s.htm\"><img src=\"mini/%s.jpg\" width=%d height=%d border=0 alt=\"\"></a></td>" EOL,
				photo[j].file, photo[j].file, photo[j].sx, photo[j].sy);
			if (j % N_SMALL == N_SMALL - 1 || j == N_PHOTO - 1) {
				fprintf(fp, "</tr>" EOL);
			}
		}
		
		fprintf(fp, "</table>" EOL);
		fprintf(fp, "" EOL);
		fprintf(fp, "<br>" EOL);
		fprintf(fp, "<a href=\"../index.htm\">home</a>" EOL);
		fprintf(fp, "</td>" EOL);
		fprintf(fp, "</tr>" EOL);
		fprintf(fp, "" EOL);
		fprintf(fp, "<tr>" EOL);
		fprintf(fp, "</tr>" EOL);
		fprintf(fp, "" EOL);
		fprintf(fp, "</table>" EOL);
		fprintf(fp, "</div>" EOL);
		fprintf(fp, "" EOL);
		fprintf(fp, "</body>" EOL);
		fprintf(fp, "</html>" EOL);

		if (fclose(fp) == EOF) {
			fprintf(stderr, "Can't close %s.\n", file);
			break;
		}
	}

	return (0);
}

home戻る
E-mail: asaken@mb.infoweb.ne.jp