こんにちは
phpで一部だけ動くアニメーションGIFが作りたいです。
imagickを使っての、画像全体を切り替える方式のアニメーションGIFの作り方は見つかるのですが、
ファイル容量の関係で、一部だけをアニメーションさせたファイルを作りたいです。
なにか方法はありますでしょうか?

サーバー側のカスタマイズはそれなりに可能ですが、Cプログラムを動かすのは難しそうです。

サーバーOSは、現在は実験段階でWindowsなのですが、運用段階ではLinuxになりそうです。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

大分時間が立っているのですでに解決していることと思いますが・・・



アニメーションGIFは、その仕様として、描画後にどういう処理をするか、というのを設定できます。(Disposal Method)
ソレをImageMagickでやるなら、
http://www.php.net/manual/ja/function.imagick-se …
このメソッドを使います。
英語のコメントを見ると、「3」を設定すると描画後次のコマに進んだ時に消えるようになります。

で、一部だけ動かしたいということで大きな画像の中に小さな画像を埋めるようなことになると思いますが、
その画像のオフセット位置を決定するのが、
http://www.php.net/manual/ja/function.imagick-se …
多分これです。
これで縦横幅を設定し、X座標、Y座標を設定して、画像中のどこら辺に表示するかを決定できるみたいです。
    • good
    • 0

以下にGIFアニメを作成するクラスが公開されているので、これを利用して作成すればいいと思います。


http://www.phpclasses.org/package/3163-PHP-Gener …
    • good
    • 0
この回答へのお礼

ありがとうございます。調べてみます。

お礼日時:2011/04/15 09:40

それってPHPでやる必要がありますか?


一部だけアニメーションするということは全体画像にたいして
小さめの画像を用意してオフセットやパスを指定したり結構めんどうです。
ペイントソフトの守備範囲だと思いますが・・・

この回答への補足

>それってPHPでやる必要がありますか?
サーバー側で自動生成したいのです。
なにか方法はありますでしょうか?

補足日時:2011/04/14 11:36
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWebでgif画像が表示されません。

基本的なことだと思いますが、教えてください。
http://www.cgi-down.com/cgi/g_counter.php
上のCGIのカウンターをためしに設置しようとしてみて
画像が×印で表示されてうまくいかず、以下のようにindex.htmlに
<img src="../cgi-bin/image/0.gif">
<img src="127.0.0.1/cgi-bin/image/0.gif">
などと実際にGIF画像を表示させてみようとしたのですがそれでもうまくいきません。
場所は以下のようになっていて
Linux上のファイラー上ではGIF画像は正しく表示されています。
# ls /var/www/html/index.html
/var/www/html/index.html
# ls /var/www/cgi-bin/image/
0.gif 1.gif 2.gif 3.gif 4.gif 5.gif 6.gif 7.gif 8.gif 9.gif Thumbs.db

httpd.confでは
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
としておりExecCGIも有効にしています。
よければ教えてください。

基本的なことだと思いますが、教えてください。
http://www.cgi-down.com/cgi/g_counter.php
上のCGIのカウンターをためしに設置しようとしてみて
画像が×印で表示されてうまくいかず、以下のようにindex.htmlに
<img src="../cgi-bin/image/0.gif">
<img src="127.0.0.1/cgi-bin/image/0.gif">
などと実際にGIF画像を表示させてみようとしたのですがそれでもうまくいきません。
場所は以下のようになっていて
Linux上のファイラー上ではGIF画像は正しく表示されています。
# ls /var/www/html/index.htm...続きを読む

Aベストアンサー

よく考えたらScriptAliasディレクティブですよね。

>ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"​

ScriptAliasで指定した/var/www/cgi-binディレクトリ配下にあるファイルはスクリプトファイルだと判断され、画像ファイルも実行しようとしてエラーになるようなので、/var/www/cgi-binディレクトリとは別の場所に画像ファイルを置いてそちらを参照するようにするのはどうでしょうか?

Qphpでgifアニメかどうかチェックする方法はありますか?

phpの$_FILEでアップしたファイルを、
gifアニメかどうかチェックする方法はあるでしょうか?

Aベストアンサー

ImageMagickを使えば、詳しいフォーマット知らなくても出来ると思いますよ。

参考URL:http://jp2.php.net/manual/ja/function.imagick-getimageformat.php

QGIF画像の著作権

JPEG,BMPはOK

GIFは著作権にうるさいからと良く聞きますが、
どういう使い方をすると著作権にかかわるのでしょうか?


1.GIFを表示したホームページ
2.タイトルにGIFを表示しただけのコンピューターソフト
3.GIF自体を使える(GIF編集)コンピューターソフト

※GIFを使ってどのようなものを
作った辞典で著作権なのでしょうか?

Aベストアンサー

著作権とは、画像などの著作物を作成した人の持つ権利です。

GIFという画像形式は、著作権ではなく特許権(画像を圧縮・表示する技術)で守られていて、会社がその管理を厳重にしていて、その形式のファイルを扱うことができるソフトに関しては、ライセンス料(利用料)を要求しているので、いろいろと煩くなっています。

ライセンス料を支払っているソフトを使って画像を作成したり、表示したりすることは何の問題もありません。

Qphp5.3で動いていたプログラムが5.4では一部のソースが表示されてしまいます。

はじめて投稿させていただきます。
お力添えいただければ幸いです。

ホームページでメールフォームを設置しています。
php5.3で問題なく動作していました。
同じフォームを違うホームページにも使おうとソースをコピペしたのですが、正しく表示されません。
何度も確認したのですが、元データとの差異は発見できず、どうしたものかと途方に暮れていたのですが、phpのバージョンが違うことに気が付きました。

プログラムは「入力画面」「確認画面」「送信完了のお知らせ画面」の3段構成になっていて、エラーが出るのは「確認画面」です。
そのプログラムの部分のコードは以下の通りです。


<form action="submit.php" method="POST">

<?
if ($_SERVER["REQUEST_METHOD"] == "POST") {
foreach($_POST as $k => $v){
if (get_magic_quotes_gpc()) {
$v = stripslashes($v);
}
$v = htmlspecialchars($v);
$$k = $v;
}
}
else {
exit();
}

$ErrFlg = 0;
if ($name == "") {
echo "<p>お名前を入力してください。";
$ErrFlg = 1;
}
if ($email == "") {
echo "<p>メールアドレスを入力してください。";
$ErrFlg = 1;
}
if ($_POST["email1"] != $_POST["email2"]) {
echo "<li>メールアドレスに誤りがあります。</li>";
$ErrFlg = 1;
}

if (!$ErrFlg) {
?>

<dl>
<dd>お名前</dd>
<dt><?=$_POST['name']?></dt>

<dd>eメール</dd>
<dt><?=$_POST['email1']?></dt>

<dd>メッセージ</dd>
<dt><?=$_POST['message']?></dt>
</dl>

<input type="submit" value="送信">

<? } ?>
<input type="hidden" name="name" value="<?= $_POST['name'] ?>">
<input type="hidden" name="email" value="<?= $_POST['email1'] ?>">
<input type="hidden" name="message" value="<?= $_POST['message'] ?>">

</form>

上記コードで、php5.4では不具合がでてしまう箇所、もしくはそもそも…など、何かお分かりになる方がいらっしゃいましたら是非ともご教授のほど、よろしくお願いいたします。

はじめて投稿させていただきます。
お力添えいただければ幸いです。

ホームページでメールフォームを設置しています。
php5.3で問題なく動作していました。
同じフォームを違うホームページにも使おうとソースをコピペしたのですが、正しく表示されません。
何度も確認したのですが、元データとの差異は発見できず、どうしたものかと途方に暮れていたのですが、phpのバージョンが違うことに気が付きました。

プログラムは「入力画面」「確認画面」「送信完了のお知らせ画面」の3段構成になっていて、エ...続きを読む

Aベストアンサー

あてずっぽなので合ってないとは思いますが
php.iniでshort_open_tag がおかしかったりしません?

http://php.net/manual/ja/ini.core.php

ちなみにご提示の
foreach($_POST as $k => $v){
if (get_magic_quotes_gpc()) {
$v = stripslashes($v);
}
$v = htmlspecialchars($v);
$$k = $v;
}
}
は、あまりEXTRACTと同じであまりお勧めできない書式です
外部から受けたデータを変数名として使うのはかなり危険です
nameやemailなど変数名が決めうちなのですからめんどくさがらず
$list=array("name","email")などを提示して、ループ処理をしてください

また確認画面でhiddenでデータを渡すのは今となってはあまり使わない手法ですね
入力→確認→実行 間の受け渡しはできるかぎりセッションを利用してください

Q画像形式のGIFについて教えてください。

画像形式のGIFについて教えてください。

GIFには、GIF32、GIF64、GIF128

と言うのがありますが、この中で、一番高画質なのは、どの形式ですが。

あと、イラストレーターで保存する場合、

ディザあり、なし、を選択できますが、

高画質で保存する場合、あり、なし、どちらを選択すればよいのでしょうか。

Aベストアンサー

■GIFには、GIF32、GIF64、GIF128と言うのがありますが、この中で、一番高画質なのは、どの形式ですが。この中で、一番高画質なのは、どの形式ですが。
>>このなかで一番色の多いのが128色です。


■ディザあり、なし、を選択できますが高画質で保存する場合、あり、なし、どちらを選択すればよいのでしょうか。
>>低画質で保存して見難いときは、ディザで新聞写真のようにドット化して保存します。

QPHP3で作ったプログラムをPHP4、PHP5で動作させる事は可能ですか

PHP3で作ったプログラムをPHP4、PHP5で動かすことは可能でしょうか?例えばあるサイトがPHP3を未だに使用していたとします。もしPHP4,5でPHP3時に書いたプログラムが動けばいいのですが、動作はするでしょうか?もし動かなければ少しずつチューニングしていくより、一気に4,5で書き直した方がはやいでしょうか?

Aベストアンサー

1. 動くかどうか?
 物によるでしょうね
 具体的に判断するには やはり自分のPC上にApache+php5を入れて
 目的のphpを動かしてみるのが良いかと?
windowsでしたら Apache+PHP+MySqlが一度にインストールできる
 XAMPP http://phpspot.net/php/pgXAMPP.html
 Vertrigo http://japanese.osstrans.net/software/vertrigo.html
  が便利です
   (より確実なテストを行うなら目的のサーバーと同じ環境
    例えば CentosなどのLinuxでTEST用サーバーを立てた方がBESTですが)

2. php4や5書き換え?
もはやPHP4もサポート終了ですので PHP5で書き換えた方が良いかと思われます。
http://www.phppro.jp/news/403

QGIF フラッシュ その他の技術?

ある一つの大きなGIF画像があるとします。
そのGIF画像上には、
「左右どちらかの道に進んでください」と記載されているとします。
さらにその大きなGIF画像上には、小さな「右」「左」というGIF画像がそれぞれ貼り付けてあって、
質問の回答として、「右」をクリックしたときに(あるいは「左」をクリックしたときに)
大きなGIF画像がきりかわる(つまり別のGIF画像が現れる
)。

上記のようなことをしたいのですが、フラッシュを使わないとできないですか?

Aベストアンサー

GIFは設定された時間だけ設定された画面を繰り返して表示する事しかできません。
したがって、クリックしても何の感知もしません。

ただし、htmlでGIF画像をクリックして、新しいページ(html)を表示させる事ができます。
htmlでページが変わっても良ければGIF画像だけでも可能でしょう。

QImagemagick後のgifアニメーション

さくらインターネット(マネジドサーバー)にて、PHPのWEBアプリを開発中です。

Imagemagickを使ってgif画像のリサイズをしています。
ところが、アニメーションgifをリサイズするとアニメーションが出来ず最初の一枚だけが表示されます。(リサイズしなければアニメーションします)

これはImagemagickが何らかの原因でうまく動作してないのでしょうか?
それとも、元々そういうもの(仕様)なのでしょうか?

御存知の方がいらっしゃいましたら、ご教授ください。

お手数ですが、よろしくお願いします。

敬具

Aベストアンサー

PHPマニュアルなどを見ながらソースに不備がないか確認されたほうがよいかと思います。
例えばイメージを置き換えるつもりでsetImageメソッド叩いたら全部同じ参照を渡してしまっていたりとか・・・

ソースを見ないとなんとも言えませんが、少なくとも「出来るはず」です。

QGIF動画とGIF動画を繋げる方法

GIF動画の作成について質問です。
数本作ったGIF動画を繋げて一本の長いGIF動画にしたいと思っています。1秒につき10枚×10数秒程度のものを数本連結するという感じです。
GIF動画同士をつなげて一本にする方法が分からず検索してみると、ムービーメーカーについてやフリーソフトの紹介をいくつか見つけたのですが、それは最終的にはGIF動画という形にはならないようで・・・。
初心者にも簡単に出来る良い方法がありましたら教えてください。よろしく御願いします。

Aベストアンサー

GIFアニメーション作成ソフト 「Giam」がお勧めです。
まず1つ読み込んで、「コマの付け足し」で別のGIFアニメを読み込みます。
これを繰り返して、最後に保存すればOK。
http://homepage3.nifty.com/furumizo/giamd.htm

参考URL:http://homepage3.nifty.com/furumizo/giamd.htm

Q[HTML-PHP]あるPHPファイルだけ文字化け

お世話になります。

XP/PHP5.2.9/Apache2.2.11
の環境で、簡単なシステムを作っているのですが、その際に
PHP側で
header( "Content-Type: text/html;charset=shift_jis");
HTML側で
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
と明示的にSJISにしているのですが、実際にローカルで確認すると文字化けしてしまうPHPファイルがあります。(1ファイルのみ)
他のPHPファイルは同様のヘッダー情報を送信していますが、文字化けせずに画面出力されています。

HTML-PHP初心者のため、補足等必要になるとは思いますが、どうぞご教授下さい。

Aベストアンサー

IEで見たり、FireFoxで見たりと複数ブラウザで確認していますか?
文字化けしている環境をつきとめると、原因が見えてくるかも知れません。
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
の前に、日本語(2バイト文字)が書かれている等はありませんか?
全角空白等の見つけにくいものかも知れません。
ブラウザのソースを表示で出力された結果を、半角空白、全角空白を代替え記号で表示できるようなテキストエディタで表示させれば、判るかも知れません。

文字化けした環境で、文字コードを自動ではなく、手動で切り替えて文字化けの仕方から、どの文字コードだと認識されているか、を確認すると判るかも知れません。

該当のファイルで外部データを読み込んでいないか(DBからデータを取得している、テキストファイルを読み込んでいる、別のPHPファイルをIncludeしている)、読み込んでいたらそちらの文字コードが正しくないのかも知れません


人気Q&Aランキング