gpt4 book ai didi

javascript - 将图像另存为 Base64 时应用程序在 Ionic View 中崩溃

转载 作者:行者123 更新时间:2023-12-03 08:25:55 27 4
gpt4 key购买 nike

我最近在尝试保存图片时遇到了 Ionic 应用程序的问题。

我正在使用 ngcordova 插件来捕获图像,并将其作为 base64 字符串保存在我的范围中。

我选择使用本地存储来存储我们的图片,因为它们将是低质量的图像,这不是很重要。

拍照方法

    $scope.takePictureFront = function(){
var cameraOptions = {
quality: 10,
destinationType: Camera.DestinationType.DATA_URL
};
var success = function(data){
$scope.$apply(function () {
/*
remember to set the image ng-src in $apply,
i tried to set it from outside and it doesn't work.
*/
$scope.cameraPicFront = "data:image/jpeg;base64," + data;
alert('Inserting front ');

});
};
var failure = function(message){
alert('Failed because: ' + message);
};
//call the cordova camera plugin to open the device's camera
navigator.camera.getPicture( success , failure , cameraOptions );
};

要保存到本地存储的对象

  var newCustomer = {
firstname: $scope.customer.firstname(),
lastname: $scope.customer.lastname(),
title: $scope.customer.title(),
phone: $scope.customer.phone(),
cellphone: $scope.customer.cellphone(),
email: $scope.customer.email(),
timeStamp: today,
metAt: $scope.conferencePicked,
addedBy : $scope.userLoggedIn,
imageFront : $scope.cameraPicFront,
imageBack : $scope.cameraPicBack,
comment: $scope.customer.comment(),
interests : $scope.selected

};

如何将对象数组保存到本地存储

$scope.storedJSON = JSON.parse(window.localStorage['data'] || '{"companies":[],"customers":[]}');
$scope.storedJSON.customers.push(newCustomer);
$scope.storedJSON.companies.push(newCompany);
var jsonData = JSON.stringify($scope.storedJSON);
window.localStorage['data'] = jsonData;
$state.go('tab.search');

当我尝试在 iPad、平板电脑和 Android 设备上插入日期时,应用程序空闲,然后崩溃或无法响应。

有什么建议吗?

编辑

我找到了解决这个问题的方法。可以理解的是,即使是我尝试过的出色手机和平板电脑在将此类文件保存在本地存储中时也会遇到问题。

我编辑了相机插件的选项,现在正在保存较小的图像,目标分辨率较低,一切似乎都工作正常。仅供将来在这个废弃问题上绊倒的人:)

最佳答案

应用程序中可能存在内存泄漏。由于我不知道您的应用程序如何运行,因此这将是我的最佳猜测。您可以尝试的另一件事是检查是否允许 LocalStorage;当你尝试使用LocalStorage时,曾出现过很多内存违规的情况(个人经验)。

我建议您将 base64 保存到文本文件中;这不会影响您的应用程序的性能,因为读/写操作实际上是轻内存的。 :)

看看:

$scope.saveFileToDataStorate = function() {

var data = JSON.stringify( newCustomer );

$cordovaFile.writeFile( cordova.file.dataDirectory, 'userDetails.txt', data )
.then( function( suc ){

alert( 'File Saved! You can now try and open it.' );

}, function( error ){ alert( error.code ); });

};

请记住在 Controller 中包含 $cordovaFile 依赖项。

关于javascript - 将图像另存为 Base64 时应用程序在 Ionic View 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33545212/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com