質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

1回答

1358閲覧

(Wordpress) PHPのheader関数で画像出力を試みているが、真っ黒な背景に小さな白い四角が出るだけで何も起きない。

Bonkk

総合スコア10

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2022/02/03 14:51

■ やろうとしていること
PHPで画像パスを引数として自動的に画像にウォーターマーク(すかし)を追加するショートコードを組もうと考えています。画像にすかしを入れる方法は次を採用しようと考えています:

PHP

1<?php 2// スタンプと、それをすかしとして適用する写真を読み込みます 3$stamp = imagecreatefrompng('stamp.png'); 4$im = imagecreatefromjpeg('photo.jpeg'); 5 6// スタンプの余白を設定し、スタンプ画像の幅と高さを取得します 7$marge_right = 10; 8$marge_bottom = 10; 9$sx = imagesx($stamp); 10$sy = imagesy($stamp); 11 12// スタンプ画像を写真の上にコピーします。余白の値と 13// 写真の幅を元にスタンプの位置を決定します 14imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp)); 15 16// 出力し、メモリを開放します 17header('Content-type: image/png'); 18imagepng($im); 19imagedestroy($im); 20?>

(参考:https://www.php.net/manual/ja/image.examples-watermark.php

■ 困っていること・試してみたこと
試しに上記コードをそのまま実行したところ、真っ黒な背景に小さな白い四角が表示されるだけで何も起きませんでした。 画像パス、ファイル名、拡張子等々をよく確認して実行してみたのですがミスは特にありませんでした。

原因を突き止めるためにとりあえず画像を作成→出力するだけのコードを組みました:

PHP

1$img = imagecreatefrompng('画像パス'); 2header('Content-type: image/png'); 3imagepng($img); 4imagedestroy($img);

色々いじってみたところ、どうも header関数の部分が原因のようです。
header関数の部分を省いて再度サイトに表示させると、文字化けした文字列が表示されるのでリクエストしたデータは返ってきているようです。

解決策を探してみたところ同じような問題で困っている方が過去にいらっしゃったようです:
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11170505951
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11192174686

その他、組んだPHPをbase64でエンコードimgタグで表示させるなどのやり方を目にしましたがチンプンカンプンで途方に暮れています・・・。

なにか解決法をご存知でしたらぜひお知恵をお貸しください!
まとまりのない質問ですみません m(_ _)m

■ 備考
動作環境:Mac
Wordpressのテーマ: Luxeritas
サーバ: 開発環境(LOCAL by FLYWHEEL)
ブラウザ: Chrome(Incognito モード)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

原因を突き止めるためにとりあえず画像を作成→出力するだけのコードを組みました:

PHP

1$img = imagecreatefrompng('画像パス'); 2header('Content-type: image/png'); 3imagepng($img); 4imagedestroy($img);

私の環境では問題なく画像が表示されました。
以下を確認してみてください。
・画像パスが合っているか?
・画像パスのファイルはpngファイルか?
・GDが有効になっているか?

投稿2022/02/03 23:24

tabuu

総合スコア2449

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tabuu

2022/02/03 23:30

念のためheaderにContent-Lengthも追加してみてください。 header('Content-Length: '.filesize('画像パス'));
Bonkk

2022/02/04 05:36

ご回答ありがとうございます! ご提案いただいたように確認してみましたが、どこも間違ってはいないようです・・・。 Content-Lengthも追加してみましたが、以前変わらず真っ黒な背景に小さい白い四角が表示れるだけです・・・。 自分で調べ直したところ、画像の読み込みの方にエラーがありそれがそのまま画像として出力されているかもしれないということを突き止めました。試しに表示されている画面を画像で保存したところ、SSL系のエラーが出ていました。原因はここかもしれないので、別途そのエラーについての質問を投稿しようと考えています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問