Моделирование изображений, прибывающих из другого блога

Я задал вопрос ранее при получении постминиатюр от другого WP-сайта. Там, удивительный Mike кодировал SQL-запрос, результаты которого, затем переходит к массиву PHP. Часть кода из того ответа, который я хочу изменить, является этим.

$post_urls = $wpdb->get_col($sql);
  if (is_array($post_urls))
    echo implode("\n",$post_urls);

Теперь массив содержит значения в форме <img src="/link/to/image.jpg"/>. Теперь, как делают меня..

  1. Назовите WP image_resize функция на каждом URL изображения?
  2. Применить мой собственный класс CSS к каждому изображению?

ОБНОВЛЕНИЕ:

Благодаря Jan для подсказок относительно оптимизации SQL-запроса. Теперь $post_urls массив будет содержать только простые URL к изображениям. Может кто-то показывать мне, как циклично выполниться через каждый URL в массиве и добавить префиксы (как <img src=") и суффиксы (как " class="awesome-image"/>) каждому из них?

1
13.04.2017, 15:37
3 ответа

Вызов image_resize() было бы трудным, так как это будет искать изображение в каталоге загрузки Вашего основного блога. Если бы это - фиксированный размер изображения, я просто добавил бы его к конфигурации Вашего фотоблога, таким образом, это создается там при загрузке новых изображений (можно затем восстановить старые миниатюры изображения).

В ответе Mike's Вы видите, что он добавляет <img src=" и "/> части в SQL-запросе. Это хорошо, но Вы не должны делать этого. Если Вы уезжаете, это от Вас получает просто URL изображения, и можно добавить все позже в PHP. Я записал альтернативную версию, которая предоставит Вам больше необработанной информации для проигрывания с.

$attachment_data_list = $wpdb->get_results( $sql );
if ( $attachment_data_list ) {
    foreach ( $attachment_data_list as $attachment_data ) {
        echo '<img src="/mysubblog/wp-content/uploads/';
        echo $attachment_data->upload_relative_path;
        echo '"/>';
    }
}
3
19.02.2020, 22:42
  • 1
    Хорошо, я считал Ваш ответ. Спасибо за большее количество материала фанату с! Теперь я понимаю, что WP генерирует миниатюры для изображений, которые я загружаю. Это делает то же для 'известных изображений' также? –  GPX 13.01.2011, 15:36
  • 2
    @GPX: Действительно, это происходит для всех изображений. "Известные изображения" или миниатюры сообщения, являются просто специальным размером обычных изображений. –  Jan Fabry 13.01.2011, 15:43

Я должен признать, что действительно не знаю, мудро ли использовать питание WP image_resice на связанных изображениях HTTP. Я, вероятно, сформулировал бы дополнительный вопрос узнать больше о потребностях. Вероятно, что-то как:

Как я отображаю уменьшенный вариант изображения, которое я связал в теге img HTML?

Что касается остальной части волшебства с PHP, это, вероятно, делает то, что Вы просите. Я нашел эту древнюю волшебную формулу, которая должна к волшебству согласно книге, в которой я нашел его:

<?php
function doing_magic_on($my_very_specific_formatted_string, $my_own_css_class, $magic = 'bGlzdCgkc3RhcnQsICR1cmwsICRlbmQpID0gZXhwbG9kZSgnIicsICRteV92ZXJ5X3NwZWNpZmljX2Zvcm1hdHRlZF9zdHJpbmcpOw0KcmV0dXJuIHNwcmludGYoJyVzJXMiIGNsYXNzPSIlcyVzJywgJHN0YXJ0LCAkdXJsLCAkbXlfb3duX2Nzc19jbGFzcywgJGVuZCk7DQo=') {
    return eval(base64_decode($magic));
}

Да пребудет с вами Сила и удача, улучшающая Ваши волшебные навыки для будущего!

3
19.02.2020, 22:42
  • 1
    Это в образовательных целях или стимулировании паранойи? Просто выяснение... –  Rarst 13.01.2011, 15:04
  • 2
    мм.... wtf? Я думал, что будет хорошая шутка, когда я прошел через основу 64 декодирования что..., возможно, изображение Hoff или чего-то. Но я должен пропускать контекст так или иначе. –  goldenapples 13.01.2011, 18:44
  • 3
    Вопрос просил волшебный PHP, таким образом волшебство по определению является материалом, мы не понимаем, но делает что-то как немного удивления. Как eval'ed base64 закодировал что-то. :) –  hakre 13.01.2011, 19:24
  • 4
    Lol. Добавление класса CSS к изображению похоже довольно волшебно. –  goldenapples 13.01.2011, 20:08

Если Вы хотите изменить размер изображения, необходимо загрузить изображение с веб-сервера и затем записать это в диск. Ниже функции должен добиться цели. Изображение затем хранится на локальном жестком диске. Это является на самом деле намного более дружественным затем загрузка миниатюр от другого сайта.

function http_image_writer($imgSrc, $filepath) {

  if(isset($imgSrc)) {

    //getting the image dimensions
    list($width, $height) = getimagesize($imgSrc);

    //saving the image into memory
    //the file has to be a jpg file or it will fail.
    //Use the other imagecreate functions for other formats.
    $myImage = imagecreatefromjpeg($imgSrc);

    // Creating the thumbnail
    $file = imagecreatetruecolor($width, $height);
    imagecopyresampled($file, $myImage, 0,0,0,0, $width, $height, $width, $height);

    //final output of the image file
    imagejpeg($file,$filepath);

    //cleanup of the images in memory
    imagedestroy($file);
    imagedestroy($myImage);
  }
}

так как эта функция использует GD, можно просто добавить некоторый код изменения размеров к нему существует много примеров для этого.

2
19.02.2020, 22:42

Теги

Похожие вопросы