Cordova Instagram插件:使用JPG图片
Cordova Instagram plugin: using with JPG images?
我正在开发一个移动应用程序,该应用程序使用Cordova插件,允许在Instagram上共享图像;插件函数要求图像输入必须是(1)画布ID,或(2)base64 PNG dataUrl。
因为将图像从JPG转换为PNG似乎不理想(特别是因为图像类似照片/复杂,PNG将比JPG大得多),我想尝试将JPG附加到画布上,然后将画布ID传递给插件函数。
我代码:HTML(使用AngularJS指令在原始照片&(被应用的过滤器转换过的那个)
<div class="item item-image" ng-click="showOrig = !showOrig">
<img ng-src={{imgUrl}} ng-if="!showOrig" id="transformedImage">
<img ng-src={{imgUrlOrig}} ng-if="showOrig">
</div>
JS/角控制器function getBase64Image(img) {
var canvas = document.createElement("canvas");
canvas.width = img.naturalWidth;
canvas.height = img.naturalHeight;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL("image/png");
return dataURL.replace(/^data:image'/(png|jpg);base64,/, "");
}
$scope.shareInstagram = function() {
Instagram
.share(getBase64Image(document.getElementById("transformedImage")), 'some caption', function(err) {
if (err) {
console.log('error: ', err);
} else {
console.log('Instagram share success.');
}
});
};
然而,这种情况是行不通的。它不会在控制台显示任何错误;该功能不会在点击/点击时触发。
有人知道这里发生了什么吗?
因为文档不是很清楚,它可能是画布需要有一个PNG图像附加到它的情况下(即JPG我传入将不起作用)。在这种情况下,是否有办法将JPG转换为PNG ?
弄清楚了:我需要返回完整的dataURL,包括开始时的编码信息,而不仅仅是Base64字符串。
所以我改变了函数的返回语句
return dataURL.replace(/^data:image'/(png|jpg);base64,/, "");
:
return dataURL;
,它工作!
相关文章:
- 在Shopify中获取博客文章的图片
- 图片照片库
- 知道为什么我的旋转木马不会自动更改图片吗
- PHP AJAX图片上传示例不上传
- 如何使用input-tage上传图片并查看在laravel中上传的文件预览
- 在我的网站上显示最近提交的文章/图片
- 如何更改拉斐尔元素图片
- joomla添加了更改图片的javascript
- '图片'没有用于本机道具的propType'RCTImageView.overlayColor&
- 显示某个用户ID的某个标签的30张Instagram图片
- 用JavaScript/jQuery点击图片,选中多个方框
- 如何在图片和边缘之间居中设置标签
- 点击放大图片.JavaScript、CSS和HTML
- 通过webrtc-pubnub传递上传的图片
- 如何通过ajax将png图片从服务器发送到浏览器中显示
- 加载collada纹理数据(.jpg本身)时对其进行操作
- 无法在Cordova 4.0 ios中将jpg/jpeg图像转换为Base64
- 使用api在facebook页面上发布图片或状态
- Cordova Instagram插件:使用JPG图片
- 如何使浏览文件上传窗口只显示.jpg格式的图片?