友人は友人がPHPをやっている必要があります受信、PHPのニーズがGIFを生成して、私が対処する助けてみましょう。ビブラートに似た彼のプロジェクトは、インターフェイスから表示される短いビデオは、完全なビデオに、その後のgifアクションフィギュアで、と。
私は、需要のGIFああを生成するPHPをやったことがないだろうと思っていました。しかし、ああ行うことができますPythonは、コードの唯一の4行が得ることができるようになり、フルカウントを果たしました。私はなぜ私は彼にプラグインを書いていません
ここでは、このパッケージをmoviepy使用しました。
1. moviepyをインストールします。
moviepyをインストールするPIP
2.プログラムが開始書きます。
彼のサーバー上で、私はすぐに良いピップPythonと環境と。
!#USR / binに/ envをPythonの # - * -コーディング:UTF-8 _ * - "" " @author:Hurrican @file:gif.py @time:2019年6月22日午前21時33 " "" インポートSYS インポートMPYのmoviepy.editor AS sys.argvの= [1] imge_url != IF imge_url '': '' '処理パススタート' '' 作品を... = imge_url.split( '/')[ - 2:] パス= '/'。 (作品...)参加 パスpath.replace =( 'MP4' 、'。GIF ') のdirname = 'を/ usr / share / nginxの/ HTML / KY /データ/アップロード/' +パス '' '' '処理経路'末端 試す: ビデオファイル#1のローカルパス コンテンツ= mpy.VideoFileClip(imge_url) #クリップセグメント0 0秒秒〜1。注:サイズ変更は、定義変更されません使用しないでください C1 =コンテンツを。 除くEインクルードAS例外: 印刷(E) 他: 印刷(「システムエラー」)
私は上記のPythonコードを書きました。
あなたは気づいているかもしれません。、sys.argvの[1]は、実際には、これは、PHPからパラメータに対する私のパスです。
あなたの隣に展開します。
SYSモジュールの導入。第1のパラメータPHPの上を通過するテーブルでsy.argv [1]
以下は、私が撮影した断片のコードPHPであり、
PHPコード
<?phpの // + -------------------------------------------- -------------------------- // | YFCMF [我々はそれによりシンプルを行うことができます] // + -------------------------------------- -------------------------------- // | 著作権(C)2015から2016 http://www.rainfer.cnすべての権利を保有。 // + ----------------------------------------------- ----------------------- // | 著者:rainfer <[email protected]> // + ------------------------------------- --------------------------------- 名前空間のアプリ\ホーム\コントローラ。 キャッシュ\考えて使用します。 \ Dbと思い使用します。 \キャプチャ\のキャプチャを考えて使用します。 クラスインデックスは、ベースを拡張{ パブリック関数インデックス(){ をset_time_limit(0); $ニュース= DB ::名前( 'ニュース') - >オーダー( "news_time ASC") - >フィールド( 'n_id、news_title、news_time、news_content、news_hits、member_list_id、news_hits、zan_num') - >()を選択します。 $データ= [ 'ニュース' => $のニュース、 ]; ################################################## #######外挂开始######################################### ################# ($キー=> $値として$データ[ 'ニュース'])のforeach { #コード... $ img_url = $値[ 'news_content'] ; もし($のimg_url = ''!){ $順= "パイソン" .getcwd() "/アプリ/ホーム/コントローラ/ gif.py {$のimg_url}"。 $データ=はshell_exec($順)。 // // $結果= EXEC( 'は/ usr / binに/パイソン/usr/share/nginx/html/KY/app/home/controller/gif.py {$のimg_url}')。 //#写日志文件 ますfile_put_contents(dirnameは(__ FILEの__) '/ log.txtという'、$データ'\ rを\ n'は、FILE_APPEND。。); } }
################################################## #######プラグ端######################################### #################
//エコー'<前>';
//ますprint_r($データ);死にます;
返します$ this->表示- >フェッチ( ':インデックス');
}
私はpyhonと対話するPHPコードを特定するだろうかの真ん中を差し込みます。
ここで私はPHPのはshell_exec関数を使用し、それが唯一の1つの行の結果を返すことができるので、execが理由ではありません。すべての結果を返すためにはshell_exec。GETCWDは()関数はPHPで、ロゴは、現在の作業ディレクトリを返します。
パイソン二重引用符だけでなく、ああスペースを残すことを忘れないでください。その後、結果をプリントアウトすることができます。そして、ライン上のログファイル内のPHPプロジェクトを追加します。
成功の後、我々は、ログファイルを見て次のようになります。
ここでの作業ディレクトリです。TPフレームYFCMFの使用。しかし、我々は777を与えるために注意を払う必要があります(644ではないと思われる、テストが失敗した)、またはログファイルを書き込むことはできません。