如何从脚本返回图像

时间:2013-02-11 作者:Chris Strutton

我在google上搜索过,但一定没有使用正确的术语。我正在尝试向我的WordPress插件添加一个脚本,该脚本接受url并返回重新格式化的图像。我知道这是不赞成的热链接。我的案例中的图像是由网站图像服务提供的。

生成图像需要3到5秒的时间。我有一个java脚本,可以在输入网站url后设置预览图像src标记(onblur)。我需要一种从服务下载全尺寸图像并将其调整为缩略图的方法(我在浏览器中调整了大小,但看起来很容易)。我试着访问wordpressdownload_url() 函数,但我得到了许多未解析的引用。我肯定我做错了什么。

我的现有代码:

<?php
require_once(\'../../../wp-admin/includes/file.php\');
$im = download_url(\'http://www.linux.org/images/logo/linuxorg.gif\'); 
header(\'content-type: image/gif\'); 
// resize and send image data here...
我返回以下错误:

Fatal error: Call to undefined function __() in /homepages/5/d367772185/htdocs/rodandfly/wp-admin/includes/file.php on line 13

3 个回复
SO网友:Chris_O

致命错误:在/homepages/5/d36772185/htdocs/rodandfly/wp admin/includes/file中调用未定义的函数_uu()。php第13行

你的代码在哪里?文件php期望__() 如果从激活的插件中加载它,则定义它应该是什么。

做你想做的事情的最好方法是media_handle_sidelaod()media_sideload_image() 这将导致WordPress从完整图像创建缩略图。

$resized_img_url = wpse_download_resize( \'http://www.linux.org/images/logo/linuxorg.gif\' );

function wpse_download_resize( $url ) {
    $tmp = download_url( $url );
    $file = array(
        \'name\' => basename( $url ),
        \'tmp_name\' => $tmp
    );

    if ( is_wp_error( $tmp ) ) {
        @unlink( $file[ \'tmp_name\' ] );
    return $tmp
    }

    $id = media_handle_sideload( $file, 0 );
    // Check for handle sideload errors.
    if ( is_wp_error( $id ) ) {
        @unlink( $file[\'tmp_name\'] );
    return $id;
    }

    return wp_get_attachment_thumb_url( $id );
}

SO网友:Mark Kaplun

核心问题是,您需要在wordpress上下文中执行代码,而您似乎正试图以另一种方式执行(在脚本上下文中执行wordpress代码)。

实现它的方法是将图像生成请求发送到wordpress的主url,然后使用$_POST$_GET 用于指示请求将由代码处理的变量,钩住init 操作并检测请求是否针对您的代码,生成您需要的任何内容,然后退出。

SO网友:david.binda

这是因为您没有加载所有功能的默认WordPress。您必须在这行前面加上前缀:

include("../../../wp-load.php");

结束

相关推荐

如果加载了404.php,如何与IS_PAGE核对?

我想检查当前页面是否至少符合两个条件中的一个。我不想在about页面和404页面中显示js代码。在剩下的页面中,我展示了js代码。所以,我使用((!is_page(element1) AND !is_page(element2)) 然后显示js代码。Element1是一个特定页面的slug,element2是404。php页面。我不知道在if语句中要显示的404页的slug或名称。