使用base64获取图像字符串

时间:2018-03-19 22:22:32

标签: cordova typescript ionic-framework

我试图从('@ ionic-native / image-picker')获取图像文件uri的base64字符串(使用'@ ionic-native / base64'),但在运行此代码后,图像似乎被破坏了。有什么建议吗?

我的HTML:

<img [src]="base64ImageChosen" *ngIf="base64ImageChosen"/>

选择器选项:

    this.pickerOptions = {
        maximumImagesCount: 1,
        width: 10,
        height: 10,
        quality: 100,
        outputType: 0
    };

我的代码:

chooseImage() {
    this.imagePicker.getPictures(this.pickerOptions).then((results) => {
        for (let i = 0; i < results.length; i++) {
            let filePath: string = results[i];

            this.base64.encodeFile(filePath)
            .then((base64File: string) => {
                this.base64ImageChosen = base64File
            }, (err) => {
                console.log(err);
            })
            .then((res) =>
                this.myForm.patchValue({ imageChosen: this.base64ImageChosen })
            )
        }
    }, (err) => { });
}

2 个答案:

答案 0 :(得分:1)

要显示图像,您需要使用window.URL.createObjectURL()来创建表示图像对象的字符串。

let image = new Image()
image.src = filePath;
base64ImageChosen = URL.createObjectURL(image);

从您的代码中,您似乎想要显示文件夹中的所有图像。我假设你使用ngFor在你的html模板中循环。

答案 1 :(得分:1)

您可以使用:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:strip-space elements="*"/> <!-- identity transform --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="Snippet"/> <xsl:template match="description"> <xsl:copy> <xsl:variable name="len" select="string-length(substring-before(., '&lt;table'))" /> <xsl:value-of select="substring(., $len + 1)" disable-output-escaping="yes"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 数据:image / jpeg; base64,this.imagePicker.getPictures(options).then( (res)=>{ for (var i = 0; i < res.length; i++) { let base64 =