从SQL表中获取图像

时间:2014-12-08 14:09:05

标签: html mysql joomla sobipro

我在我的Joomla 3.x网站上使用SobiPro,我有一个自定义字段,在我的条目中,这是一个图像,它存储在名为XXXX_sobipro_field_data的表中我有一个{{1}对于Image字段,它等于23。但是每个条目的数据都是这样的: fid (field id)
但是我需要显示图像,我该怎么处理这样的事情呢?

修改

我这样做了:(它有效,但只能用.png图像)

jVFNT8JAEL37KzZ70kQp/US34WCgIEQ+AjUeyULXdgjtVrqgaPrf3d1WRA/E27438+a9maXEJZ8FcQiOqKDYp8SsMXuHF4XtGvcGj4HCnsK3EsOGjWnKsF8Qs0mway5gxRvrPNaMVXV0qWAhqC4gpmO2POuu5dj+ccIcPqqarPyw4SHXbE2N5ICKqqwgpTEz1jmrrGyC52wlgGdFj++ySJEtgjuT0SgYh9gv9RAJp09h0FU7OPVOiUg3qtuSad8gEkkbezZGCYM4Efqtqh7BD5pRkTwV3iX4WbUfCWk3KDp8w7d6GWV5mkBfFUhTSRU/C+7DyYygOLpRW6C92Wiiy10BWYwGwz4aToM+2nvW1TV63dENiANqo5Z7IXcpS22vT6DCOd/3KIyCLyHfcoNlYgsSu64Babz4/TFSK5JdutRa65xWt/1Ry1NL9A/fFf+jlD/AtxBDRvXFbe+c/FRafgE=

2 个答案:

答案 0 :(得分:3)

我也在寻找相同的答案......最终必须自己弄清楚。

简而言之,您需要检查两个选项:

  1. 对于一些较短的字符串(进行编码)只需使用base64_decode($ str)
  2. 更长的字符串使用gzinflate(base64_decode($ str))
  3. 功能中文件“/com_sobipro/lib/base/config.php”中提供了更长的版本:

    public static function unserialize( $var, $name = null )
    {
        $r = null;
        if ( is_string( $var ) && strlen( $var ) > 2 ) {
            if ( ( $var2 = base64_decode( $var, true ) ) ) {
                if ( function_exists( 'gzinflate' ) ) {
                    if ( ( $r = @gzinflate( $var2 ) ) ) {
                        if ( !$r = @unserialize( $r ) ) {
                            throw new SPException( sprintf( 'Cannot unserialize compressed variable %s', $name ) );
                        }
                    }
                    else {
                        if ( !( $r = @unserialize( $var2 ) ) ) {
                            throw new SPException( sprintf( 'Cannot unserialize raw (?) encoded variable %s', $name ) );
                        }
                    }
                }
                else {
                    if ( !( $r = @unserialize( $var2 ) ) ) {
                        throw new SPException( sprintf( 'Cannot unserialize raw encoded variable %s', $name ) );
                    }
                }
            }
            else {
                if ( !( $r = @unserialize( $var ) ) ) {
                    throw new SPException( sprintf( 'Cannot unserialize raw variable %s', $name ) );
                }
            }
        }
        return $r;
    }
    

    以下是执行编码的函数:

    public static function serialize( $var )
    {
        if ( !( is_string( $var ) ) && ( is_array( $var ) && count( $var ) ) || is_object( $var ) ) {
            $var = serialize( $var );
        }
        if ( is_string( $var ) && function_exists( 'gzdeflate' ) && ( strlen( $var ) > 500 ) ) {
            $var = gzdeflate( $var, 9 );
        }
        if ( is_string( $var ) && strlen( $var ) > 2 ) {
            $var = base64_encode( $var );
        }
        return is_string( $var ) ? $var : null;
    }
    

    希望这有帮助。

    你的字符串解码如下:

    一个:5:{S:4: “数据”;一个:1:{S:4: “EXIF”;一个:3:{S:4: “FILE”;一个:6:{S:8 “文件名”,S:10: “51_ico.jpg”; S:12: “FileDateTime”; I:1417629743; S:8: “文件大小”; I:1762; S:8: “文件类型”; I:2 S:8: “Mime类型”; S:10: “图像/ JPEG”; S:13: “SectionsFound”; S:7: “COMMENT”;} S:8: “计算的”;一个:4:{S :4:“html”; s:22:“width =”63“height =”63“”; s:6:“Height”; i:63; s:5:“Width”; i:63; s: 7:“IsColor”; i:1;} s:7:“评论”; a:1:{i:0; s:57:“CREATOR:gd-jpeg v1.0(使用IJG JPEG v62),质量= 75“;}}} s:5:”image“; s:40:”images / sobipro / entries / 55 / img_51_ico.jpg“; s:5:”thumb“; s:42:”images / sobipro / entries /55/thumb_51_ico.jpg";s:3:"ico";s:40:"images/sobipro/entries/55/ico_51_ico.jpg";s:8:"original";s:36:"images/sobipro /entries/55/51_ico.jpg“;}

答案 1 :(得分:0)

解决了这个问题。

$entries[$key]['field_avatar'] = $entry->get('field_avatar');

// Encrypt Image
$enc_image = $entries[ $key ]['field_avatar'];

// Decrypt image 
**$dec_image = SPConfig::unserialize( $enc_image );**