Получить изображения в том же размере в PHP - PullRequest
0 голосов
/ 22 октября 2018

Я создал приложение для получения изображений тегов Instagram в качестве вывода.Я могу загрузить изображения.Но мне нужно получить изображения в одном размере.Кто-нибудь поможет мне решить эту проблему?

Вот код ...

  <?php
    function scrape_insta_hash($tag) {
        $insta_source = 
    file_get_contents('https://www.instagram.com/explore/tags/'.$tag.'/'); 
        $shards = explode('window._sharedData = ', $insta_source);
        $insta_json = explode(';</script>', $shards[1]); 
        $insta_array = json_decode($insta_json[0], TRUE);
        return $insta_array; 
    }

        $tag = 'savesripada'; 
        $results_array = scrape_insta_hash($tag);
        $limit = 15; 
        $image_array= array(); 
        for ($i=0; $i < $limit; $i++) { 

            $latest_array = $results_array['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges'][$i]['node'];
            $image_data  = '<img src="'.$latest_array['thumbnail_src'].'">'; 
            array_push($image_array, $image_data);
        }


        foreach ($image_array as $image) {
            echo $image;
    }
      ?>

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Следующий код изменит размер изображения до желаемого.

<?php
$height = 150;
$width = 150;
    function scrape_insta_hash($tag) {
            $insta_source =
        file_get_contents('https://www.instagram.com/explore/tags/'.$tag.'/');
            $shards = explode('window._sharedData = ', $insta_source);
            $insta_json = explode(';</script>', $shards[1]);
            $insta_array = json_decode($insta_json[0], TRUE);
            return $insta_array;
        }

            $tag = 'savesripada';
            $results_array = scrape_insta_hash($tag);
            $limit = 15;
            $image_array= array();
            for ($i=0; $i < $limit; $i++) {

                $latest_array = $results_array['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges'][$i]['node'];
                $image_data  = '<img height="'.$height.'" width="'.$width.'" src="'.$latest_array['thumbnail_src'].'">';
                array_push($image_array, $image_data);
            }


            foreach ($image_array as $image) {
                echo $image;
            }
?>
0 голосов
/ 22 октября 2018

Вы можете сделать что-то вроде этого:

    <?php
    $tag = 'savesripada'; 
    $results_array = scrape_insta_hash($tag);
    $image_array = array_filter(
        $results_array['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges'],
         function($item) {
            $size = $item['node']['dimensions']; // example : [height: 810, width: 1080]
            return $size['height'] === '130' && $size['width'] === '150'; // Adjust your condition if you want another metrix
        });
    var_dump($image_array); // Will print image with exactly 150*130

Здесь я использую array_filter, чтобы искать и подбирать изображение, у которого только высота == 130 и ширина == 150.

...