0

以下のコードは、指定された Web サイト上のすべての画像を検索し、最大のものを返しますが、非常に遅いです。誰でも助けることができますか?ありがとう!

$largest = 0;
$images = array();

reg_match_all('/(img|src)\=(\"|\')[^\"\'\>]+/i', $html, $media);
unset($html);

$data=preg_replace('/(img|src)(\"|\'|\=\"|\=\')(.*)/i',"$3",$media[0]);
foreach($data as $imgUrl) {
$info = pathinfo($imgUrl);

if (isset($info['extension'])) {
    if (($info['extension'] == 'jpg') ||
        ($info['extension'] == 'jpeg') ||
        ($info['extension'] == 'gif') ||
        ($info['extension'] == 'png')) {

        array_push($images, $imgUrl);
        $imgUrl = $this->rel2abs($imgUrl, $this->url);
        list($width, $height, $type, $attr) = getimagesize($imgUrl);
        $size = $width * $height;

        if ($size > $largest) {
            $this->image = $imgUrl;
            $largest = $size;
        }
    }
}
4

1 に答える 1

4

私はあなたと同じ問題を抱えていました.getimagesizeが画像をサーバーにダウンロードしてサイズを取得しているため、imgメタ情報のみを読み取ってサイズを返す独自のラッパーを作成しました。
ここ: http://pastebin.com/3XuSAw0qはクラスです。jpg、png、gif ファイルを扱うことができます。

次のように使用します。

$image = new Parser_Provider_Image();
$sizes = $image->getImageSize('http://../../img.jpg');
于 2012-08-10T06:10:10.583 に答える