2016年10月23日日曜日

Laravelで画像処理ライブラリIntervention Imageを使えるまでの流れ

Thumbnailの作成、画像のサイズ変更など様々な機能が有するライブラリIntervention Imageを自分の環境で使えるまでの流れをメモしていきたいと思います。

1、まずPhpの拡張モジュールGDをインストールしておき必要があります。
    コマンド、「php -i | grep gd」で自分の環境がphp-gdインストールされたかとかを確認します。

  もし何も表示されなかったら、以下の手順でphp-gdをインストールしてください。  
  
  以下、php-gdのインストール方法:
  ① 「yun list | grep gd」でインストールできるphp-gdパッケージを確認します。
     自分のphpバージョンに合うパッケージを選びます。
    例え自分のphpバージョンは5.6の場合は、
    以下のコマンドでphp-gdをインストールします。
   yum install php56-php-gd.x86_64 --enablerepo=remi

  ② インストールしたパッケージをphpが見えるように設定
    remiでインストールしたパッケージはデフォルト以下の場所に配置されます。
   /opt/remi/php56/root/usr/lib64/php/modules/gd.so
    
    php.iniファイルがパッケージをロードできるように、以下コマンドでシンボルリンクを作成しておきます。
     ln -s /opt/remi/php56/root/usr/lib64/php/modules/gd.so /usr/lib64/php/modules/gd.so

    ③ 最後「/etc/php.ini」に以下を追記して、NginxかApache(sudo service httpd restart)を再起動します。
      extension=gd.so
※時にはApacheを再起動しても反映されない時があります。PCを再起動すれば大体問題がなくなります。
    
2、 「composer.json」ファイルに、「"intervention/image": "dev-master"」を追加
   例:

"require": {
"laravel/framework": "5.1.*",
"intervention/image": "dev-master"
}

3、以下のコマンドを実行します。
  $ composer install
4、config/app.phpファイルを開いて、$providers arrayのところに、以下を追記
  Intervention\Image\ImageServiceProvider::class,
5、config/app.phpファイルの$aliases arrayのところに、以下を追記
  'Image' => Intervention\Image\Facades\Image::class,
6、最後念のため、以下のコマンドも実行します。
  $ composer update

2016年10月22日土曜日

php laravelでアップロードしたファイルの名前と絶対パスの取得方法

phpのlaravelで、UploadedFileからアップロードしたファイルの絶対パス($_FILE['tmp_name'])の取得方法は?

UploadedFileを見ると、以下の情報が見れます。

array(
       'test' => false,
       'originalName' => 'triangle-in-the-mountains.jpg',
       'mimeType' => 'image/jpeg',
       'size' => 463833,
       'error' => 0,
)
phpのように、$_FILE['tmp_name']を取得したい時があります。

その時、「getRealPath()」を使えば、アップロードされたtmp_nameを取得することができます。

「$uploadedFile->getRealPath();」で「/tmp/php5Wx0aJ」のような結果を得られます。

もちろん、getFilename() と getPathname() も使えます。

最後補足、「UploadedFile」ファイルはphpの「File」を継承しています。

2016年9月30日金曜日

java seleniumでinput テキストボックスの値をクリアする方法

たまに<input type="text">要素の値をクリアしたいときがあります。

クリアする方法は以下の二種類があります。

① element.sendKeys(Keys.chord(Keys.CONTROL, "a"), "");
  上記のコードを簡単に説明:まずテキストを前選択、そして空の文字をリプレースします。
  もちろん以下のコードも効きます。
  element.sendKeys(Keys.HOME,Keys.chord(Keys.SHIFT,Keys.END),"");
②  element.clear()
  element.sendKeys("Some text here")
  方法二はとても理解しやすいと思います。単純にクリアしてから自分が入れたい文字を入れればいい