スクリプトの内容は次のとおり。PHP のオンラインマニュアルを検索しながら書いているレベルなので、問題点もあると思います。作者免責でご使用ください。また、問題点をみつけたときは、伝言板連絡フォーム でご指摘ください。


<?php
// size to pixel calculator - kaburaya October 2011
// 何センチのときにこの DPI なら何ピクセルか、を計算するスクリプト
$script $_SERVER['PHP_SELF'];
//$title = 'Size / Pixel Numbers Converter';
$title '実寸サイズからピクセル数を計算';

function 
print_footer() {
print<<<_FOOTER_

</div>
</div>
</body>
<html>
_FOOTER_;
exit;
}

header('Content-type: text/html');
print<<<_HEADER_
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
$title</title>
<style type="text/css">
div#container {text-align: center;}
div#main {float: auto; text-align: left; margin: 50px auto; width: 550px; line-height: 150%;}
.right {text-align: right;}
h1 {font-size: 100%; padding: 6px 8px; background-color: #dde6dd; border-style: dotted none; border-width: 1px; border-color: #80a080;}
p ul {margin: 2px; padding: 0;}
p.note {padding-left: 20px; font-size: 100%; color: firebrick;}
.framed {margin: 12px 0 ; padding: 12px; border: 1px dotted #80a080; background-color: #fafff0; }
em {font-weight: bold; font-style: normal;}
input {margin: 4px 0}
table {align: center; border-collapse: collapse; border: thin solid; rules: all; margin: 6px auto;}
table th {padding: 4px 8px; text-align: center; border: 1px solid; background-color: #fafff0;}
table td {padding: 4px 8px; text-align: center; border: 1px solid #608080;}
</style>
</head>
<body onload="document.size_input.size.focus()">
<div id="container">
<div id="main">

_HEADER_;

// 送信動作をしたか
if (!$_POST['posted']) {
// 送信動作がまだなら初期画面を表示
print<<<_DIALOG_
<h1>$title</h1>

<ul>
<li>実寸サイズと DPI からピクセル数を計算します。</li>
<li>サイズ(mm)と DPI を入力し、「計算」ボタンで実行すると、ピクセル数を表示します。入力数字は半角のみ。</li>
</ul>

<form class="framed" name="size_input" action="
$script" method="post">
<input type="hidden" name="posted" value="yes" />
&nbsp; &nbsp; 横幅 : <input type="text" name="width" size="30" value="100" /> mm<br />
&nbsp; &nbsp; 高さ : <input type="text" name="height" size="30" value="100" /> mm<br />
&nbsp; &nbsp; DPI&nbsp; : <input type="text" name="dpi" size="30" value="350" /> dpi &nbsp; 
<input type="submit" value="計算" />
</form>

_DIALOG_;

print_footer();

} else {

// データを受け取ったら計算して表示
$width $_POST['width'];
$height $_POST['height'];
$dpi $_POST['dpi'];

if (
strlen($size) > 10) {
    
$error_message '入力桁数が多すぎます。';
}
if (!
ctype_digit($width) || !ctype_digit($height) || !ctype_digit($dpi)) {
    
$error_message '入力値が異常です。半角数字を使ってください。';
}
if (
$error_message) {

print<<<_ERROR_
<h1>$title</h1>
<p>
$error_message</p>
<p class="right"><a href="
$script">&raquo; 最初から</a></p>
<br />

_ERROR_;
print_footer();
}

$dpi_list = array($dpi72150300350600);

$i 0;
while (
$dpi_list[$i]) {
    
$pixel_w[$i] = round($width $dpi_list[$i] / 25.41);
    
$pixel_h[$i] = round($height $dpi_list[$i] / 25.41);
    
$i++;
}

print<<<_RESULT_
<h1>$title</h1>

<p>計算結果は次のとおり。</p>

<div class="framed">
<p>横 <em>
{$width}</em> mm、縦 <em>{$height}</em> mm は <em>{$dpi_list[0]}</em> dpi のとき、横 <em>{$pixel_w[0]}</em> ピクセル、縦 <em>{$pixel_h[0]}</em> ピクセルです。</p>

<table>
<tr><th width="100">width (mm)</th><th width="100">height (mm)</th><th width="100">dpi</th><th width="100">pixels (w)</th><th width="100">pixels (w)</th></tr>
<tr><td rowspan="5">
{$width}</td><td rowspan="5">{$height}</td><td>{$dpi_list[1]}</td><td>{$pixel_w[1]}</td><td>{$pixel_h[1]}</td></tr>
<tr><td>
{$dpi_list[2]}</td><td>{$pixel_w[2]}</td><td>{$pixel_h[2]}</td></tr>
<tr><td>
{$dpi_list[3]}</td><td>{$pixel_w[3]}</td><td>{$pixel_h[3]}</td></tr>
<tr><td>
{$dpi_list[4]}</td><td>{$pixel_w[4]}</td><td>{$pixel_h[4]}</td></tr>
<tr><td>
{$dpi_list[5]}</td><td>{$pixel_w[5]}</td><td>{$pixel_h[5]}</td></tr>
</table>
</div>

<p class="right"><a href="
$script">&raquo; 最初から</a></p>
<br />
_RESULT_;

print_footer();
}
?>

(2011/10/05)