如何在Sencha Touch 2中将编码的base64图像定义为背景?

时间:2014-05-15 14:41:33

标签: javascript sencha-touch-2 base64

我通过以下PHP代码将图像编码到base64中:

$file = fopen($arquivoImagem,"rb", 0);
$gambar = fread($file,filesize($arquivoImagem)); 
fclose($file); 
$base64 = chunk_split(base64_encode($gambar));  

在此之后,我将$ base64变量写入文件,稍后我通过Sencha Touch中的ajax读取它。我可以正常读取$ base64变量,但是我无法将base64图像定义为Sencha Touch中的背景。我试图通过上面的代码来做到这一点。 " imagem"变量包含PHP中$ base64变量的内容。

Ext.define("myapp.view.Main", {
    extend: 'Ext.Panel',
    alias: 'widget.mainForm',
    requires: ['Ext.Label', 'Ext.Button'],

    initialize: function () {
        var imagem;
        var store = Ext.getStore('ImagemMenu').load();
        store.each(function(record) {
            if (record.get('local') == 0) {
                imagem = record.get('imagem');
                var estilo = "background-image: url('data:image/png;base64," + imagem + "');";
                this.setStyle(estilo);
            }
        });
    },

...  

无论如何,我的问题是:如何在Sencha Touch 2中将base64图像定义为背景?

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

这有点痛苦,因为Sencha试图解析传入的字符串并基本上将其拆分:这意味着base64图像字符串不起作用。因此,您需要使用对象调用setStyle,例如在您的代码中:

var estilo = "url('data:image/png;base64," + imagem + "')";

this.setStyle({'background-image', estilo});

同样重要的是要注意,你不能在样式字符串的末尾加上分号,否则它就不会起作用。

希望有所帮助!