PHP GD スケッチ風変換

[ コード例 ]

IMG_FILTER_MEAN_REMOVAL 以外の引数はありません。


<?php

/**
 * GD 画像風景画変換
 * argv : 1 : ソースファイル名, 2 : デストファイル名
 */
 
// 引数取得 //
$srcfnm = $argv[1];
$dstfnm = $argv[2];

// 画像タイプ取得 //
list($src_width, $src_height, $type) = getimagesize($srcfnm);

switch ($type) {
  case IMAGETYPE_JPEG:    // 2
    $im = imagecreatefromjpeg($srcfnm);
    break;
  case IMAGETYPE_PNG:     // 3
    $im = imagecreatefrompng($srcfnm);
    break;
  case IMAGETYPE_GIF:     // 1
    $im = imagecreatefromgif($srcfnm);
    break;
}

// 変換して保存 //
$res = 1;
if ($im) {
  imagefilter($im, IMG_FILTER_MEAN_REMOVAL);
}
else {
  $res = 0;
}

if ($type == IMAGETYPE_JPEG) {
  imagejpeg($im, $dstfnm);
}
else if ($type == IMAGETYPE_PNG) {
  imagepng($im, $dstfnm);
}
else {
  imagegif($im, $dstfnm);
}

// 解放 //
gedestroy($im);

// 連想配列に格納 //
$responce = [];
$responce["Result"] = $res;

// JSONに変換して出力 //
echo json_encode($responce, JSON_PRETTY_PRINT);
?>


ここで教えていただきました。http://kyasper.com/php-tips/

[ 利用例・変換前 ]

[ 利用例・変換後 ]

Java selenium Implicit Wait を使う

selenium でJavaでスクレープする時、読込が終わるまでの待機方法がわからず、Thread.sleep(2000) とかをクリック後の処理に入れてましたが、即完了する場合、不要でタイムアウトして確実に実行できないことも多いので、ちょっと調べたところ、
Implicit Wait を使うと解決するのがわかり、いつも使ってます。

[ コード例 ]



import java.util.concurrent.TimeUnit;    // <== これが必要

    if (this.isHeadless) {
      ChromeOptions options = new ChromeOptions();
      options.addArguments("--headless", "--disable-gpu");
      driver = new ChromeDriver(options);
    }
    else {
      driver = new ChromeDriver();
    }

    // タイムアウトを10秒にセット //
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

ここで教えて頂きました: http://softwaretest.jp/labo/tech/labo-294/

JAVA Runtime の外部プロセス実行で ” で囲んだ文字列が分かれて渡される (Linux)

少しはまったので備忘録しておきます。

[ コード例 ]



String spec = "Width : 23.50 Length : 234.20"
// 外部プログラムコマンド //
String cmd = this.phpGDCommandStamp + " " + imgfnm + " " + outfnm + " "
	      // Windows では通用した //
        //+ "\"" + spec + "\" " +  getPanelColorConfig(spec) + " 48 H " + colrgbMap.get(col) + " "
        // Linux では分かれてしまうので、置き換えて外部プログラム側で元に戻す //
        + spec.replaceAll(" ", "_") + " " + getPanelColorConfig(spec) + " 48 H " + colrgbMap.get(col) + " "
        + this.phpGDCommandPath;
System.out.println(cmd);

String restxt = "";
try {

  Runtime runtime = Runtime.getRuntime();
  Process p = runtime.exec(cmd);
  InputStream is = p.getInputStream();

  // レスポンス取得 //
  int nread;
  byte[] rbuf = new byte[200];
  while ((nread = is.read(rbuf)) > 0) {
  }
  restxt = new String(rbuf, "US-ASCII");

}
catch (Exception e) {
  e.printStackTrace();
}
System.out.println(restxt);