가상 이미지 제공 사이트에서 여러 장의 이미지를 가져오는 스크립트

7582 단어 PHPcrawlingimage
이미지 등록 형식 등을 검증할 때
여러 가지 위조 이미지를 원해서 만들었어요.
가상 이미지 획득 사이트는 아래 두 사이트에서 설정한다
・lorempixel((http://lorempixel.com/)
・unsplash(https://unsplash.com/)
URL에 지정된 매개변수를 추가한 후
지정한 장수의 그림을 가져와 zip 형식으로 압축하면 다운로드할 수 있습니다.
이것은 php의 핸드폰 프로그램이다
참고가 됐으면 해서 투고했습니다.

설치 단계

  • Docoment Root 밑에 "admin"이라는 디렉터리 만들기
  • "admin"디렉터리 아래에 "getDummyImage.php"라는 이름으로 파일을 만들고 프로그램 원본의 내용
  • "admin"디렉터리에 "download"디렉터리 만들기
  • "download"디렉터리의 권한을 "777"
  • 로 설정

    작업 환경


    CentOS6.5
    Apache2.2
    PHP5.6
    ※ wget, zip 명령 실행 가능

    프로그램 원본

    <html>
    <head>
    </head>
    <body>
    
    
    
    <?php
    
    // パラメータ取得
    $input = $_GET;
    
    if (empty($input)) {
        print_r("<br/>");
        print_r("<b>■lorempixel サイトから画像を取得する場合</b>");
        print_r("<br/>");
        print_r("<br/>");
        print_r("<font color='#bc3434'>※ 画像にテキストの埋め込みができますが、画像数が少ないため同じ画像が取得される可能性が高いです。</font>");
        print_r("<br/>");
        print_r("<br/>");
        print_r("以下のルールでURLを設定してください。");
        print_r("<br/>");
        print_r("<br/>");
        print_r("<font color='#2a86d4'>?width=[幅]&height=[高さ]&gray=[グレー画像にしたい場合は「g」と入力]&category=[カテゴリ名]&id=[写真のID]&text=ダミーテキスト&total=[ダウンロードしたい画像数]</font>");
        print_r("<br/>");
        print_r("<br/>");
        print_r("<font color='#ec6d7f'>例:/admin/getDummyImage.php?site=lorempixel&width=150&height=150&category=cats&text=tci&total=20</font>");
        print_r("<br/>");
        print_r("<br/>");
        print_r("※ 英字または数値で入力してください。");
        print_r("<br/>");
        print_r("※ 幅と高さは必須です。");
        print_r("<br/>");
        print_r("※ カテゴリは、「abstract, animals, business, cats, city, food, nightlife, fashion, people, nature, sports, technics, transport」が指定可能です。");
        print_r("<br/>");
        print_r("※ カテゴリを指定しないと、写真のID、ダミーテキストは反映されません。");
        print_r("<br/>");
        print_r("※ ダミーテキストは、英字で入力する必要があります。");
        print_r("<br/>");
        print_r("※ ダウンロードしたい画像数が多いと同じ画像が取得される可能性があります。");
        print_r("<br/>");
        print_r("<hr/>");
        print_r("<br/>");
        print_r("<b>■unsplash サイトから画像を取得する場合</b>");
        print_r("<br/>");
        print_r("<br/>");
        print_r("<font color='#bc3434'>※ 画像数が多いので同じ画像が取得されることは少ないですが、画像にテキストの埋め込みができません。</font>");
        print_r("<br/>");
        print_r("<br/>");
        print_r("以下のルールでURLを設定してください。");
        print_r("<br/>");
        print_r("<br/>");
        print_r("<font color='#2a86d4'>?width=[幅]&height=[高さ]&gray=[グレー画像にしたい場合は「g」と入力]&total=[ダウンロードしたい画像数]</font>");
        print_r("<br/>");
        print_r("<br/>");
        print_r("<font color='#ec6d7f'>例:/admin/getDummyImage.php?site=unsplash&width=150&height=150&gray=g&total=20</font>");
        print_r("<br/>");
        print_r("<br/>");
        print_r("※ 英字または数値で入力してください。");
        print_r("<br/>");
        print_r("※ 幅と高さは必須です。");
        print_r("<br/>");
        print_r("※ 画像はランダムです。");
        print_r("<br/>");
        print_r("※ ダウンロードしたい画像数が多いと同じ画像が取得される可能性があります。");
        print_r("<br/>");
        print_r("<div style='margin-top:50px;'><small>©transcosmos inc. All rights reserved. Based by TCI-Framework.</small></div>");
        exit();
    }
    
    // デフォルト値指定
    $format = array('width' => 100, 'height' => 100, 'total' => 1);
    
    // 空値のパラメータを除去
    $input = array_filter($input);
    // デフォルト値をパラメータ値で置換
    $input = array_merge($format, $input);
    
    // カウント変数をセット
    $cnt   = 1;
    
    // ファイル格納場所
    $time     = time();
    $path     = __DIR__ . '/download/' . $time . '/';
    $zippath  = __DIR__ . '/download/';
    $zipname  = $time . '.zip';
    
    // ディレクトリ作成
    if (!file_exists($path))
    {
      $ret = mkdir($path, 0777, true);
      chmod($path, 0777);
    }
    
    // URL条件指定
    $condition = '';
    if (!empty($input['gray'])) {
        $condition .= $input['gray'] . '/';
    }
    
    $condition .= $input['width'] . '/';
    $condition .= $input['height'] . '/';
    
    
    // サイト別条件指定
    $site = $input['site'];
    switch($site) {
        case 'lorempixel':
            $url = 'http://lorempixel.com';
    
            if (!empty($input['category'])) {
                $condition .= $input['category'] . '/';
    
                if (!empty($input['id'])) {
                    $condition .= $input['id'] . '/';
                } else {
                    $condition .= '0/';
                }
            }
    
            break;
        case 'unsplash':
            $url = 'http://unsplash.it';
            $condition .= '?random';
            //if (!empty($input['blur'])) {
            //    $condition .= '&blur=';
            //}
            //if (!empty($input['id'])) {
            //    $condition .= '&image=' . $input['id'];
            //}
    
            break;
        default:
            exit;
    }
    
    
    // ダミー画像取得
    while ($cnt <= $input['total']) {
    
        $wgetCmd = 'wget -O %s%s.jpg %s/%s';
    
        $name = $cnt;
    
        if (!empty($input['category']) && !empty($input['text'])) {
            $conditionPlus = $condition . $input['text'] . '-' . $cnt . '/';
        } else {
            $conditionPlus = $condition;
        }
    
        $cmd = sprintf($wgetCmd, $path, $name, $url, $conditionPlus);
        passthru($cmd, $ret);
    
        if ($ret) {
            print_r("エラーが発生しました。<br/>");
            print_r("URLパラメータまたは『<?php echo $site ?>』サイトが動作していることを確認してください。");
            exit;
        }
    
        $cnt++;
    }
    
    // Zip 圧縮
    $ret = exec("cd " . $zippath . ";zip -r " . $zipname . " " . $time);
    //if (file_exists($zippath.$zipname)) {
    //  header("Content-Type: application/octet-stream");
    //  header("Content-Disposition: attachment; filename=$zipname");
    //  ob_end_flush();
    //  readfile($zippath.$zipname);
    //} else {
    //}
    
    // Tmpディレクトリ削除
    //if($dh = @opendir($path)) {
    //
    //    while (($obj = readdir($dh))) {
    //        if($obj=='.' || $obj=='..') continue;
    //        if (!@unlink($path.'/'.$obj)) rm($path.'/'.$obj);
    //    }
    //    @rmdir($path);
    //}
    
    
    ?>
    
    こちらからダウンロードしてください。<br/>
    <a href="<?php echo (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] ?>/admin/download/<?php echo $time; ?>.zip" >Download</a>
    
    </body>
    </html>
    
    브라우저를 통해 액세스하면 이러한 느낌으로 표시됩니다.
    URL 매개 변수를 추가하여 실행하십시오.

    좋은 웹페이지 즐겨찾기