• ベストアンサー

画像の縮小が遅いです 外部プログラムを使うことはできますか?

phpで画像の縮小をしています。 imagecopyresampled関数でやっているのですが ファイルサイズが大きいと時間がやたらかかってしまいます。 画像をFormよりアップロードし、その後縮小という作業をしているのですが、 画像の縮小だけ、C言語などのほかのプログラムにさせようかとおもっています。 C言語を1から書くのは大変なので、そのような既製品(フリーウェアで)あるとおもうのですが、なんというソフトで行えばいいかわかりません。 unix上で画像の縮小をするプログラム があればおしえてください。 おねがいします。

noname#32059
noname#32059
  • PHP
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • fire--
  • ベストアンサー率49% (146/293)
回答No.1

たぶんImageMagickというのが使えると思います。 ただ、どれだけパフォーマンスが上がるのかは判りません。 PHPのGDlibもCで書かれていて各OS&CPU向けにコンパイルしている わけなので。

参考URL:
http://www.imagemagick.net/script/index.php

関連するQ&A

  • 外部装置を扱うプログラムについて

    C言語は基本的な標準関数が使える程度の者です。 外部装置(オシロスコープなど)を制御するプログラム(C言語、UNIX)のソースを解読しなければならないことになりました。GPIBインターフェースを使って制御しているみたいなんですがさっぱりわかりません。 インターフェースを使ったプログラムをするために必要な知識とはどんなものなんでしょうか?また良い参考書があれば教えてください。 よろしくお願いします。

  • アップロードしたGIF画像を縮小

    画像をアップロードした際にリサイズするプログラムを作っています。 jpegとgif形式アップロードを考えています。jpegのアップロードは うまく作動しますが、gifをアップロードしても画像はサーバにアップできるのですが、縮小処理がされていません。 その際に表示されるエラーは以下です。 Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /***/***/***/***/***/uploader.php on line 82 Warning: imagegif(): supplied argument is not a valid Image resource in /***/***/***/***/***/uploader.php on line 83 ■ソースは以下です。 フォーム部分 <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES); ?>" method="post" enctype="multipart/form-data"> <table class="main1 table001" align="center" cellpadding="5" cellspacing="0"> <tr> <th nowrap>画像ファイル1<br>(gif,jpgのみ)</th> <td nowrap><input type="file" name="gra1" size="50"></td> </tr> <tr> <td colspan="2"><input type="submit" name="confirm" value="  確認画面へ  " />&nbsp;&nbsp;<input type="submit" name="reset" value="リセット" /></td> </tr> </table> </form> 縮小処理部分 //写真ファイルのアップロード処理 if(strlen($gra1) > 0 ) { //アップロードされたテンポラリファイルの情報を取得します $fileinfo = pathinfo($gra1); //debug($fileinfo); $fileext = strtoupper($fileinfo[extension]); if ($gra1_size > $MAX_FILESIZE || $gra1_size == 0) { //アップロードファイルのサイズ上限をチェックします $error=1; $error_mes .= "画像1のサイズが大きすぎます。".$FILESIZE_COM."以下にしてください。<br />"; }elseif ($fileext != "JPG" && $fileext != "GIF") { //アップロードファイルの拡張子をチェックします $error=1; $error_mes .= "JPG、GIF形式以外の写真ファイルは登録できません。<br />"; }else { $mictime = microtime(); if($fileext=="JPG"){$imagefile1 = substr($mictime, 11) . substr($mictime, 2, 6) . ".jpg";}else if($fileext=="GIF"){$imagefile1 = substr($mictime, 11) . substr($mictime, 2, 6) . ".gif";} //テンポラリファイルを一時フォルダに名前を変えて移動します if (move_uploaded_file($_FILES['gra1']['tmp_name'], "$H_PHOTOTMP$imagefile1")) { //画像縮小処理 $sfn1="$H_PHOTOTMP$imagefile1"; //読み込みファイル名 $dfn1="$H_PHOTOTMP$imagefile1"; //書き出しファイル名 list($lw1,$lh1,$type1,$attr1) = getimagesize($sfn1); //画像情報取得 if($type1==2){ //JPGならば処理 $sw1=$lw1*0.1; //サイズは縦横10%に $sh1=$lh1*0.1; $im_in1 = @imagecreatefromjpeg($sfn1); //元画像の読み込み $im_out1 = @imagecreatetruecolor($sw1,$sh1); //縮小画像の作成 imagecopyresampled($im_out1,$im_in1,0,0,0,0,$sw1,$sh1,$lw1,$lh1); //縮小コピー imagejpeg($im_out1,$dfn1); //ディスクに出力 //debug($dfn); }else if($type1==1){ //GIFならば処理 $sw1=$lw*0.1;//$lw1*0.1; //サイズは縦横10%に $sh1=$lw*0.1;//$lh1*0.1; $im_in1 = @imagecreatefromgif($sfn1); //元画像の読み込み $im_out1 = @imagecreatetruecolor($sw1,$sh1); //縮小画像の作成 imagecopyresampled($im_out1,$im_in1,0,0,0,0,$sw1,$sh1,$lw1,$lh1); //縮小コピー imagegif($im_out1,$dfn1); //ディスクに出力 //debug($dfn); } //画像縮小処理ここまで }else{ $error=1; $error_mes .= "写真ファイル1のアップロードに失敗しました。<br />"; } } } になります。 ご教授のほど宜しくお願い致します。

    • 締切済み
    • PHP
  • 画像の縮小

    画像を20%にくらい縮小して、 自分のホームページへアップロードしたいのですが、 「画像編集ツール」で開いて 「サイズ変換」で小さくすると どうしても文字などが潰れてしまい、読めなくなってしまいます。 「CatPunch」というソフトを使って、 拡張子を「bmp」や「gif」「jpg」にしてみたのですが、 「エラー:画像を開くことができませんでした」 になってしまいます。 でも開ける画像もあります。 原因なんだかわかりません。 何か画像を縮小するソフトや良い方法をお願いいたします。

  • サーバー上での画像縮小

    お世話になります。 現在サーバーをレンタルしてそこに画像ファイル(主にデジカメで撮影したJPEG)をアップロードしているのですが、このアップロードした画像をサーバー側で縮小して表示させることはできませんか? サムネイルで一覧表示をしたいのですが、サーバーのリソースは限られているので、あらかじめサムネイルを作成しておくといった無駄はできません。 ファイルのリクエストに対してサーバーが縮小した画像を送信して欲しいのですが・・・。 JavaでもPHPでもFlashでもかまわないので教えていただけると助かります。

  • 画像の拡大・縮小

    読み込んだ画像を1.5倍に拡大、2/3倍に縮小したいのですが、C言語でそのようなことは可能なのですか?また、できるとしたら、どのように行えばいいのでしょうか?教えてくださいm(_ _)m

  • phpで外部プログラムを動かす

    初心者です。基礎的なことですが教えてください。 C言語で書いたプログラムをWebサービスで使いたいと思っています。 C単体でのプログラムをサーバ側で動かしますが、Webと連動させ、Web上のフォーマット から入力した情報をphpで経由し、サーバ側のCプログラムで処理する為に、データを渡し 起動し、結果をまたWeb上に返します。 その場合の phpでデータをCに渡し、プログラムを起動して、結果をCから貰い、Web上に 返すためのやり方を教えて下さい。どんなコーディング、関数になるのでしょうか。 またWebサーバの場合はCのコンパイラは通常どんなコンパイラを使用すれば良いの でしょうか。どんなレンタルサーバ会社でも問題ないのでしょうか。 初心者なので、よろしくお願いします

    • 締切済み
    • PHP
  • プログラム上で画像作成

    プログラム上での画像作成というのはできるのでしょうか? 例えば、関数を使って、tukutu(100,100); ※(xsize,ysize) 100*100サイズの画像を作るといったことはできるのでしょうか? しかし、作ったものをpicture1などに貼り付けられるものでないといけません。 もしくは、画像のリサイズを考えています。 例えば、rsize("a.bmp",100,100);  ※("元画像",xsize,ysize) といった感じで、もともとある画像を100*100のサイズに変える方法でもいいのですが。 画像の縮小拡大など難しいことは使わないで、もし指定のサイズより元画像が小さかったらあまりの部分に白領域を足して、大きかったら削ってしまうといった具合です。 とにかくプログラム上で指定したサイズでの画像を作成したいです。 ソフトはビジュアルスタディオを使っています。 分かる方がいましたらよろしくお願いします。

  • DBに格納された画像データを縮小して表示したい

    PHP5+MySQL5です。 DB内のBLOBカラムに、Base64エンコードされた画像データが格納されています。 これを、サムネイル用に縮小して表示したいのですが、widthとheightで見た目だけを小さくするのではなく、ファイルサイズも小さくしてブラウザに渡したいと考えています。 (小さくした画像は保存しません) そこで、DBから取得した画像データを「imagecopyresampled」で再サンプリングしつつ小さくしたいと思いましたが、画面には何も表示されませんでした。 以下、ソースを簡潔に記載します。 $db_img = "DBから画像データを取得"; //600x600の画像 //Base64デコード $old_img = base64_decode($db_img); //200x200のサムネイル画像を作成 $new_img = imagecreatetruecolor(200,200); //再サンプリング・縮小(600x600→200x200) $thumbnail = imagecopyresampled($new_img, $old_img, 0, 0, 0, 0, 200, 200, 600, 600); //画面出力 print $thumbnail; この場合、どのように処理すればいいのか教えていただけないでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP
  • 画像が縮小できません。

    画像を縮小できません。このような表示が出ます。「指定されたファイルに対してこの操作を行うプログラムが関連付けられていません。フォルダオプションコントロールパネルでプログラムを関連付けてください」というものです。 どこをどう操作したら編集(サイズを縮める)ことができるのでしょうか? 超初心者でもわかるように教えてください。お願いします。

  • DBに格納された画像データを縮小して表示したい

    PHP5+MySQL5です。 DB内のBLOBカラムに、Base64エンコードされた画像データが格納されています。 これを、サムネイル用に縮小して表示したいのですが、widthとheightで小さくするのではなく、ファイルサイズも小さくしてブラウザに渡したいと考えています。 (小さくした画像は保存しません) そこで、DBから取得した画像データを「imagecopyresampled」で再サンプリングしつつ小さくしたいと思いましたが、画面には何も表示されませんでした。 以下、ソースを簡潔に記載します。 $db_img = "DBから画像データを取得"; //600x600の画像 $old_img = base64_decode($db_img); $new_img = imagecreatetruecolor(200,200); //200x200のサムネイル画像を作成 $thumbnail = imagecopyresampled($new_img,$db_img,0,0,0,0,200,200,600,600); print $thumbnail; $old_imgの処理が間違っているのだろうと思うのですが、どのように処理すればいいのかわかりませんでした。 この場合、どのように処理すればいいのか教えていただけないでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP