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

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

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

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

Q&A

解決済

2回答

1102閲覧

PHP 画像のリサイズ

qqww

総合スコア1

PHP

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

0グッド

0クリップ

投稿2021/11/24 22:19

前提・実現したいこと

下記画像の縦横をを100px 100pxで出力するのですが
getimagesizeはローカルパスしか動かないようです
サーバーにアップロードしたURLを使いたい場合どうしたらいいでしょうか

list($width, $hight) = getimagesize('test.jpg');

list($width, $hight) = getimagesize('https://~test.jpg');で動かしたい

該当のソースコード

<?php list($width, $hight) = getimagesize('test.jpg'); // 元の画像名を指定してサイズを取得 $baseImage = imagecreatefromjpeg('test.jpg'); // 元の画像から新しい画像を作る準備 $image = imagecreatetruecolor(100, 100); // サイズを指定して新しい画像のキャンバスを作成 // 画像のコピーと伸縮 imagecopyresampled($image, $baseImage, 0, 0, 0, 0, 100, 100, $width, $hight); // コピーした画像を出力する imagejpeg($image , 'new.jpg'); ?>

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

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

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

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

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

guest

回答2

0

ベストアンサー

ドキュメントによると、URLでもgetimagesizeは使用可能です。
例3 getimagesize (URL)

投稿2021/11/24 22:49

skys215

総合スコア910

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

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

qqww

2021/11/24 23:49

実行すると真っ黒な画像になってしまうのですが <?php list($width, $hight) = getimagesize('https://teratail-v2.storage.googleapis.com/uploads/avatars/u6/68735/60b80a5da4aa88e7_thumbnail.jpg'); // 元の画像名を指定してサイズを取得 $baseImage = imagecreatefromjpeg('https://teratail-v2.storage.googleapis.com/uploads/avatars/u6/68735/60b80a5da4aa88e7_thumbnail.jpg'); // 元の画像から新しい画像を作る準備 $image = imagecreatetruecolor(100, 100); // サイズを指定して新しい画像のキャンバスを作成 // 画像のコピーと伸縮 imagecopyresampled($image, $baseImage, 0, 0, 0, 0, 100, 100, $width, $hight); // コピーした画像を出力する imagejpeg($image , 'new.jpg'); ?>
guest

0

getimagesize()

このパラメータは、情報を取得したいファイルの名前を指定します。 ローカルファイルへの参照、あるいは (設定で許可されているなら) ストリームを用いたリモートファイルへの参照を指定できます

とあるので、URLを指定しても問題ないものと思われます。
PHPマニュアルにも例3にURL指定のサンプルコードがあります(例示ドメインなので実在の画像ではないと思いますが)

またこちらの手元でダミー画像を生成できるサイトの画像をURLで直指定したところ、いずれも想定の値が取れました。

「設定で許可されているか」「パスは合っているか」あたりを確認してみては(どういう設定が必要かはもう少し調べる必要はありそうですが、URLで認証などなしで直アクセス可能であれば利用できると思います)

投稿2021/11/24 22:35

m.ts10806

総合スコア80875

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

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

qqww

2021/11/24 23:49

実行すると真っ黒な画像になってしまうのですが <?php list($width, $hight) = getimagesize('https://teratail-v2.storage.googleapis.com/uploads/avatars/u6/68735/60b80a5da4aa88e7_thumbnail.jpg'); // 元の画像名を指定してサイズを取得 $baseImage = imagecreatefromjpeg('https://teratail-v2.storage.googleapis.com/uploads/avatars/u6/68735/60b80a5da4aa88e7_thumbnail.jpg'); // 元の画像から新しい画像を作る準備 $image = imagecreatetruecolor(100, 100); // サイズを指定して新しい画像のキャンバスを作成 // 画像のコピーと伸縮 imagecopyresampled($image, $baseImage, 0, 0, 0, 0, 100, 100, $width, $hight); // コピーした画像を出力する imagejpeg($image , 'new.jpg'); ?>
m.ts10806

2021/11/25 00:08 編集

それはgetimagesizeのせいではないですね。今回の要件とは別問題です。 質問本文編集しても良いですが、もともとの要件はgetimagesizeの機能確認になっています。 解決済みとして別質問とするのが良いかと。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問