PHPで画像縮小に挑戦!エラーが発生してしまいます

このQ&Aのポイント
  • PHPで画像の縮小を試みていますが、エラーが発生しています。
  • コードを確認しましたが、ファイルが見つからないというエラーメッセージが表示されます。
  • index.phpとdl_button.pngが同じディレクトリに存在しているはずですが、正常に処理されていません。
回答を見る
  • ベストアンサー

PHPで画像縮小

質問します。自分は今PHPで画像の縮小をしようと思っています。 しかしうまくいきません。 コードは <htm> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>画像縮小</title> </head> <body> <?php $size = getimagesize("dl_button.png"); $image_in = imagecreatefrompng("dl_button.png"); $image_out = imagecreate( 90, 90 ); imagecopyresized( $image_out, $image_in, 0, 0, 0, 0, 90, 90, $size[ 0 ], $size[ 1 ] ); imagepng($image_out,"small.png"); imagedestroy( $image_in ); imagedestroy( $image_out ); ?> <img src = "dl_button.png" border = "0"> <img src = "small.png" border = "0"> </body> </html> となっています。 今のままだとエラーが出て、 「small.pngが見あたらない」と言われてしまいます。 ディレクトリは index.phpとdl_button.pngが同じ場所にあります。

  • jsqrm
  • お礼率45% (16/35)
  • PHP
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

>「small.pngが見あたらない」と言われてしまいます。 ではなく、書き込み用にOpenできないということですね(汗 単にsmall.pngを書き出そうとしているディレクトリ(つまりphpスクリプトを置いているディレクトリ)のパーミッションが707になっていないだけでは?phpの実行ユーザはapacheなので3桁目(other)の権限が必要になります。 すでにsmall.pngという名前のファイルをFTPで置いていれば、そのファイルのパーミッションが606でないといけません(ownerがapacheなら604でかまわない)。 スクリプト自体は問題ないですよ。   http://forum.lolipop.jp/test/test.php (Lolipopサーバへ仮設置)

jsqrm
質問者

お礼

返信ありがとうございます。 そしてサーバーにのせていただいてありがとうございます! パーミッションは707にしましたができませんでした! しかしhttp://forum.lolipop.jp/test/test.phpを見るとできているんですね。 できそうな気がしてきました!

その他の回答 (2)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

例示されたURLでいうと(index.phpを置いている)「test2」というディレクトリですが、これを707にしてもダメでしたか?また、もしsmall.pngが既存ファイルなら606になっていますか? #これだけで原則OKのハズなんですが・・

jsqrm
質問者

補足

はい!パーミッションは大丈夫です。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>「small.pngが見あたらない」と言われてしまいます。 imgタグの部分が×になるとかいうことでしょうか?上記スクリプトを実行したあとでsmall.pngにアクセスしたら404になるのですか?FTPでsmall.pngが作成出来ているかどうかは確認されていますか? というあたりを補足してください。

jsqrm
質問者

補足

返信ありがとうございます。 Warning: imagepng() [function.imagepng]: Unable to open 'http://yumenimademita.com/test2/small.png' for writing in /サイトパス/index.php on line 15 と出てしまいます。サーバーはロリポです。

関連するQ&A

  • phpでテキストを返す

    html側で <img src="./image.php" /> php側で header("content-type: image/jpeg"); imagejpeg($image); imagedestroy($image); とすると、画像が表示されますが、 これを画像ではなく、テキストで返すにはどのようにしたらいいでしょうか?

    • ベストアンサー
    • PHP
  • PHPによる画像の生成による色の変化

    お世話になっております。 PHPでアップロードしたjpg画像を縮小して生成しているのですが、色がおかしくなってしまいます。 (全ての画像が荘ではないのですが、変わるものは元の画像とはまったく違った青の強い色になってしまう。) ソースはこんな感じなのですが、何かおかしい部分があったらお教えいただけますでしょうか。 また、何か画像処理を加えてあるものを使用するとこのような経験がある方いらっしゃいましたらよろしくお願いいたします。 version 4.3.8です。 ******************** function imgjpg($_val1,$_val2,$_val3) { $size=GetImageSize("$_val1"); $image_in = ImageCreateFromJpeg("$_val1"); //縦長か横長か計算 $ratio = $size[0] / $size[1]; if($ratio > 1){ //横長の場合 $image_out = ImageCreate($_val3,$_val3 / $ratio); imagecopyresized($image_out,$image_in,0,0,0,0,$_val3,$_val3 / $ratio,$size[0],$size[1]); } else {//縦長の場合 $image_out = ImageCreate($_val3 * $ratio,$_val3); imagecopyresized($image_out,$image_in,0,0,0,0,$_val3 * $ratio,$_val3,$size[0],$size[1]); } ImageJPEG($image_out,$_val2); ImageDestroy($image_in); ImageDestroy($image_out); ********************

    • ベストアンサー
    • PHP
  • PHPでGDライブラリを使って縮小した画像を直接表示したい

    PHPでGDライブラリを使って、「image.jpg」という画像(800x222のJPEGファイル)を、GETで渡した幅に縮小させたくて、次のように書きました。 -----reimage.php--------------------- <?php header("Content-Type:image/jpeg"); $old_width=800; $old_height=222; $width = htmlspecialchars($_GET['w']); $height = ($old_height / $old_width) * $width; $source = imagecreatefromjpeg("image.jpg"); $re_image = imagecreatetruecolor($width,$height); imagecopyresampled($re_image,$source, 0, 0, 0, 0,$width, $height, $old_width, $old_height); imagejpeg($re_image); imagedestroy($re_image); ?> -------------------------- 他のHTMLファイルから <img src="reimage.php?w=480"> などとすると縮小された画像が表示されるのですが、直接「reimage.php?w=480」を開くと、文字化けした文字列が並んでいるばかりで画像が表示されません。 firefoxでMIMEタイプを見てみると、「text/html」になっています。 >header("Content-Type:image/jpeg"); の部分がうまくいっていないのだと思いましたが、どう直せばいいのか分かりません。 なお、サーバーはxreaの広告免除を使っています。 まだPHPを勉強し始めて日が浅いので、見当違いなことを聞いているかも知れませんが、よろしくおねがいします。

    • ベストアンサー
    • PHP
  • PHP GD 画像が縮小できない

    宜しくお願いします。 ※ローカル環境です。 (WinXP PHP5 Smarty PEAR MySQL ※GDはインストされています。) 下記のコードで、サーバーにもともと上げてある画像(jpeg)を縮小して、 それをブラウザに表示させようと思います。 ですが、縮小されずに、元の画像サイズのまま表示されてしまいます。 おかしな点をご指摘下さいませ。 また、(1)で、 jpegファイルを取り込むコードがありますが、これは、 もし画像がGIFであったりPNGの場合を顧慮するなら、 取り込む際にそれぞれを判定するのが基本でしょうか? もし、今回のようにサバー元の画像をリサイズするのであれば、拡張子もわかっていますので、 jpegファイルだけのことを考えればいいですが、 たとえば、任意のアップロードされたファイルを扱う場合は、上記3種類を判定すして処理すべきですよね? 以上、2点を回答下さいませ。 // -- (1) // 画像を読み込む。 $file_path = "http://www元画像.com/img/aa.jpg"; $image = ImageCreateFromJPEG($file_path); //JPEGファイルを読み込む /*********** $image = ImageCreateFromGIF($file_path); //GIFファイルを読み込む $image = ImageCreateFromPNG($file_path); //PNGファイルを読み込む ************/ // -- (2) // 画像のサイズを取得。 $width = ImageSX($image); //横幅(ピクセル) $height = ImageSY($image); //縦幅(ピクセル) // -- (3) // 縮小した画像のサイズを決める。 $new_width = 100; $rate = $new_width/$width; //圧縮比 $new_height = $rate*$height; // -- (4) // 空の画像を作成する。 $new_image = ImageCreateTrueColor($new_width, $new_height); // -- (5) // サンプリングしなおす  ImageCopyResampled($new_image,$image,0,0,0,0,$new_width,$new_height,$width,$height); // -- (6) // ブラウザに出力する場合。 ImageJPEG($image); //ImageJPEG($image,'simpletext.jpg'); //ImageGIF($image); //環境によっては使えない //ImagePNG($image); // -- (7) // メモリを解放する。 imagedestroy ($new_image); imagedestroy ($image);

    • ベストアンサー
    • PHP
  • 画像をクリックして別の画像を変えたい

    ボタン画像をクリックしたときに同一ページ内にある画像が変わるようにしたいのですが、下のように描くと、ボタン画像(button.gif)自身が2.pngなどの画像に変わってしまいます。   <HTML> <HEAD> <TITLE>スワップイメージ</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function changeImage(imageUrl){ document.images[0].src = imageUrl; } // --> </SCRIPT> </HEAD> <BODY> <A HREF="#" onClick="changeImage('1.png')" ><IMG SRC="button.gif" border="0"></A> <A HREF="#" onClick="changeImage(2.png')" ><IMG SRC="button.gif" border="0"></A> <A HREF="#" onClick="changeImage(3.png')" ><IMG SRC="button.gif" border="0"></A> <TABLE BORDER="0"> <TR> <TD>ボタンを押すと下に画像が表示されます。</TD> </TR> <TR> <TD><IMG SRC="1.png"></TD> </TR> </TABLE> </BODY> </HTML> 原因を私なりに考えたところ、設定した変数mageUrlをボタンを表示させるために使った<img src="button.gif">で受け取ってしまっているというのはわかりました。(確認のため <IMG SRC="1.png"> を<A HREF>~</A>より上に持ってきたら思っていた動きになりました。)  けれどそれからどう修正したらもとの順番でもちゃんと動くのかがわかりません。過去ログの似た質問も拝見したのですが、今の自分では理解できませんでした‥。すみませんがよろしくお願いいたします。

  • GD(php)での image関数 イメージ関数でブラウザ出力が出来ない

    下記ソースのimage.phpというファイルを作りました。 直接http://url/image.phpでアクセスすると画像が表示されません。 <? header("Content-Type: image/png"); $image = imagecreate(120,120); $black = imagecolorallocate($image,0,0,128); $yellow = imagecolorallocate($image,255,255,0); imageline($image,10, 60, 110, 60, $yellow); imagepng($image); imagedestroy($image); ?> imagepng($image);を imagepng($image,"test.png"); に変えたら、正しく同フォルダーにtest.pngが出力され、こちらは問題ないファイルとなっています。今回の処理ではphpを画像ファイルとして扱いたいのですが、 このケースで考えられる原因教えてください。 参考までにtest.htmlに <html><head><title>test</title> <img src="image.php"></body></html> と書いても結果は同じく画像表示が出来ませんでした。 <html><head><title>test</title> <img src="test.png"></body></html> では表示出来ます。

    • 締切済み
    • PHP
  • PHPによる画像処理

    PHPを使ってJPG形式の画像をPNG形式に変換しようとしていますが、画像が添付のスクリーンショットのようなものになってしまいます。 以下がPHPスクリプトです。 ちゃんとPNG形式の画像を表示させるにはどうしたらよいのでしょうか。 詳しい方、どうかご教授ください。お願いします。 <?php $fpath='pictures/DSCN1458.JPG'; $scimg=imagecreatefromjpeg(realpath($fpath)); $cpimg=imagecreatetruecolor(200,150); $cl=imagecolorallocate($cpimg,255,0,0); imagecopyresized($cpimg, $scimg, 0,0,0,0,imagesx($cpimg),imagesy($cpimg), imagesx($scimg),imagesy($scimg)); header('Content-type', 'image/png'); imagepng($cpimg); imagedestroy($scimg); imagedestroy($cpimg); ?> <html> <head><title>image transform</title></head> <body > </body> </html>

    • ベストアンサー
    • PHP
  • jpeg画像を表示する方法

    質問させてください。 ボタンが押されると画像が表示されるプログラムを作成したのですが、画像部分が文字化けされた文字として表示されます。 <html> <head> <title>おみくじ</title> </head> <body> <CENTER> <form method="GET" action="<?php echo $_SERVER['PHP_SELF'];?>"> <input type="submit" value="おみくじ" name="button"> </form> <?php if (isset($_GET["button"]) && $_GET["button"] !== "") { $image_in = imagecreatefromjpeg("img/omikuji.JPG"); header ( "Content-type: image/jpeg" ); imagejpeg ($image_in); imagedestroy($image_in); } ?> </CENTER> </body> </html> phpのソースを丸々別ファイルにするという方法もとったのですが、状況は変わりませんでした。 どなたかお知恵をお貸しください。

    • ベストアンサー
    • PHP
  • PHPのアニュアル17章をみて

    x.phpを <?php Header("Content-type:image/png"); $string=implode($argv," ");//変更場所 $im=imageCreateFromPng("x.png"); $orange=ImageColorAllocate($im,220,210, 60); $px=(imagesx($im)-7.5*strlen($string))/2; ImageString($im,3,$px,9,$string,$orange); ImagePng($im); ImageDestroy($im); ?> としx.htmlを <html><body> <img src="x.php?text"/> </body></html> とし画像x.pngとx.htmlとx.phpを /var/www/html/において 外部のPCからブラウザでx.htmlを呼び出したのですが絵が出ません $string=implode($argv," ");//変更場所 を $string="text"; に変更すれば絵が出ます このままでは引数を引き渡すことができません どうしたらいいのでしょうか?

    • ベストアンサー
    • PHP
  • 画像について質問です(html)

    こんばんは。またお世話になります。 前回の質問では迷惑かけてしまいまことに申し訳ありませんでした。 以後気をつけるつもりです さて、今度もまた迷ってしまいました。 レイアウトがめちゃくちゃになったりして上手くいきませんでした。 今のソースはこれです。 <IMG src="img/ザ・ディー・マグラウドの画像.png" border="0" align="absmiddle"> <font><b>第1回戦:ザ・ディー・マグラウド</b></font><br> ただの雑魚です<br> <IMG src="img/ザ・ディー・マグラウドのモンスター.png" border="0" align=""> <IMG src="img/ザ・ディー・マグラウドのモンスター2.png" border="0" align=""> <IMG src="img/ザ・ディー・マグラウドのモンスター3" border="0" align=""> <IMG src="img/ザ・ディー・マグラウドのモンスター4" border="0" align=""> <IMG src="ザ・ディー・マグラウドのモンスター5negazou" border="0" align=""> <IMG src="ザ・ディー・マグラウドのモンスター6" border="0" align=""> <IMG src="img/モンゴ・ザ・バァーンの画像.png" border="0" align="absmiddle"> <font><b>第2回戦:モンゴ・ザ・バァーン</b></font><br> ただの雑魚です<br> <IMG src="img/モンゴ・ザ・バァーンのモンスター1.png" border="0" align=""> <IMG src="img/モンゴ・ザ・バァーン2.png" border="0" align=""> <IMG src="img/モンゴ・ザ・バァーン3" border="0" align=""> <IMG src="img/モンゴ・ザ・バァーン.png" border="0" align="absmiddle"> <font><b>第2回戦:モンゴ・ザ・バァーン</b></font><br> ただの雑魚です<br> <IMG src="img/モンゴ・ザ・バァーンのモンスター1.png" border="0" align=""> <IMG src="img/モンゴ・ザ・バァーン2.png" border="0" align=""> <IMG src="img/モンゴ・ザ・バァーン3" border="0" align=""> <IMG src="img/クロス・デ・ジィーンの画像.png" border="0" align="absmiddle"> <font><b>第3回戦:クロス・デ・ジィーン</b></font><br> ゴルミアン・オート・クラッシュというモンスターが異常に強い。 「ため」後のセル・51ロケットは全体に約500のダメージ。防御が無いモンスターだと一撃死なのでためを発動されるまえに倒す<br> <IMG src="img/クロス・デ・ジィーンのモンスター.png" border="0" align=""> <IMG src="img/クロス・デ・ジィーンのもんすたー.png" border="0" align=""> <IMG src="img/クロス・デ・ジィーんのモンスター3 border="0" align=""> <IMG src="img/クリストス・ギアの画像.png" border="0" align="absmiddle"> <font><b>第4回戦:クリストス・ギア</b></font><br> 召還モンスターはなんとデス・バングスX一体のみ! ラッキー!!!と思ったそこのキミ!!そう簡単には倒せないぞ。 デス・バングスXは攻撃が4520、防御が3950、HPが2000という普通の召還モンスターとは比べものにならないくらい能力が高い。(HPは普通) 弱点といえば素早さがかなり低いことそれだけ。 だがこいつに対抗できるモンスターが1匹いる。 アーン・イヤーンというモンスターだ。ギガデイルという専用ワザでデス・バングスXに4倍の効果が期待できる。(通常効果が300なので1200<br> <IMG src="img/クロス・デ・ジィーンのモンスター.png" border="0" align=""> 要するに、第2回戦のモンゴ・ザ・バァーンの画像が第1回戦の横に貼り付けられて、行替えをして3回戦目が1回戦目の下になればOKってことです。 では宜しくお願い致します…。

専門家に質問してみよう