PHP修正PNGピクチャDPI
1741 ワード
最近PHPを使用して画像を生成して印刷に使用しますが、ブラウザのデフォルト出力は72 DPIで、印刷要求は300 DPIで、直接印刷すると画像がぼやけてしまいます.
ネット上で1周探して、大部分のリンクはImageMagickを指して、しかし私のプロジェクトは新浪SAEに配置して、新浪SAEはそれを支持しません.探し続けてみると、「PHPがGDライブラリを使ってピクチャDPIを変更する」という文章が見つかり、JPGピクチャの解像度を変更する方法が提供され、親測定が可能になった.しかし、私のプロジェクトはPNG画像を使わなければなりません.透明な背景を使っているので、上の方法はまだだめですが、考え方を参考にすることができます.その後、別の文章「PHP:Dpi of a pngイメージ」を見つけた.この文章はPNGピクチャの解像度を取得する方法を提供したが、残念ながら著者は解像度を設定する方法を与えなかった.
最后に、仕方なく、自分で书いて、もがいてやっと成功しました.これは私が書いたテストの例です.
この文章は「兄弟姉妹の皆さん、phpはどうして300解像度の画像を生成することができますか.ありがとうございます」の答えにもなるはずです.
参考資料: 《W3C PNG Specification》 「pngファイルのデータ構造」 《分析PNG画像ファイル構造(3)》 ネット検索の過程で役に立つ資料に出会ったので、ここに置いておきましょう.『JavaScript修正Canvasピクチャの解像度(DPI)』 『PNG設定解像度』(Linux関数png_set_pHYsを使用) 最後に一言、条件があればやはりImageMagickを使って、そんなに振り回す必要はありません!
ネット上で1周探して、大部分のリンクはImageMagickを指して、しかし私のプロジェクトは新浪SAEに配置して、新浪SAEはそれを支持しません.探し続けてみると、「PHPがGDライブラリを使ってピクチャDPIを変更する」という文章が見つかり、JPGピクチャの解像度を変更する方法が提供され、親測定が可能になった.しかし、私のプロジェクトはPNG画像を使わなければなりません.透明な背景を使っているので、上の方法はまだだめですが、考え方を参考にすることができます.その後、別の文章「PHP:Dpi of a pngイメージ」を見つけた.この文章はPNGピクチャの解像度を取得する方法を提供したが、残念ながら著者は解像度を設定する方法を与えなかった.
最后に、仕方なく、自分で书いて、もがいてやっと成功しました.これは私が書いたテストの例です.
0) {
// pHYs
$file = substr_replace($file, $phys, $pos - 4, 21);
} else {
//IHDR (PNG 8,IHDR 25)
$pos = 33;
// pHYs IHDR
$file = substr_replace($file, $phys, $pos, 0);
}
header("Content-type: image/png");
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
echo $file;
?>
この文章は「兄弟姉妹の皆さん、phpはどうして300解像度の画像を生成することができますか.ありがとうございます」の答えにもなるはずです.
参考資料: