使用Cordova(Phonegap)Camera API拍摄方形图像?

时间:2013-08-10 00:45:14

标签: ios cordova

我已成功编码相机API以拍摄和保存照片(在iOS上)。但是,我希望照片是方形的(如Instagram)。

我已将targetWidthtargetHeight设置为相同的像素,但图像仍然是纵向或横向的,具体取决于手机的握持方式。

我的完整API代码是:

 navigator.camera.getPicture(onPhotoDataSuccess, onFail, { 
    quality: 50, 
    targetWidth: 600, 
    targetHeight: 600, 
    correctOrientation: 1, 
    saveToPhotoAlbum: 1
    });

有没有人知道如何在iOS设备上使用此API保存方形照片?

2 个答案:

答案 0 :(得分:2)

在我的测试中,我意识到了同样的事情,但我的意图恰恰相反。我想保留图片的全尺寸,但是当相机打开时,会显示“方形叠加”,暗示只保存正方形内的内容。

然后,我将“allowEdit”参数更改为“false”而不是“true”。现在我可以保存全貌。在你的情况下,我可以看到你没有使用这个参数,所以也许你应该在你的代码中添加它。例如:

navigator.camera.getPicture(onPhotoSuccess, onPhotoFail, {
    quality : 40,
    allowEdit : false,
    destinationType : navigator.camera.DestinationType.DATA_URL, 
    encodingType : navigator.camera.EncodingType.PNG, 
    sourceType : navigator.camera.PictureSourceType.CAMERA,
    targetWidth : width,
    targetHeight : height
});

宽度和高度似乎与纵横比相比与图片的尺寸更相关。

答案 1 :(得分:0)

所以我一直在(仅限iOS)上使用它,因为我想获取方形而不是矩形的照片,这就是我的经验。

设置1

options: CameraOptions = {
        quality: 40,
        allowEdit: false, // OR unset as to allow default 'false'
        cameraDirection: 1, // BACK: 0 FRONT: 1
        destinationType: this.camera.DestinationType.DATA_URL,
        encodingType: this.camera.EncodingType.JPEG,
        mediaType: this.camera.MediaType.PICTURE,
        targetHeight: 200,
        targetWidth: 200
      }

设置2

options: CameraOptions = {
        quality: 40,
        allowEdit: true,
        cameraDirection: 1, // BACK: 0 FRONT: 1
        destinationType: this.camera.DestinationType.DATA_URL,
        encodingType: this.camera.EncodingType.JPEG,
        mediaType: this.camera.MediaType.PICTURE,
        targetHeight: 200,
        targetWidth: 200
      }

设置1 是返回矩形照片,并保留了正常的宽高比,且其中一侧(基本上)设置为“ targetHeight”或“ targetWidth”作为最大高度或最大高度-宽度。

  

DOCS:Take a Picture and Return Thumbnails (Resize the Picture)

     

要获得较小的图像,您可以通过传递两个   CameraOptions对象的targetHeight和targetWidth值。在   在此示例中,您调整了返回图像的大小以适合100px x 100px   框(保持宽高比,因此100px是高度或   宽度,以来源中较大者为准)

设置2 下,照片看起来像是正常的,然后在您选择接受或重新拍摄选项后拍照后,在指定的尺寸上有一个黄色框覆盖在照片,从而在用户批准后显示您的裁剪。因此,这里的区别在于,它最初不会拍摄方形照片,但是会返回一张照片。

  

请注意,设置2可能无法在ANDROID上运行

     

allowEdit 在Android上是不可预测的,因此不应使用!的   该插件的Android实现尝试查找并使用   用户设备上的应用程序进行图像裁剪。该插件有   无法控制用户选择执行图像的应用程序   裁剪,用户很可能会选择   不兼容的选项,并导致插件失败。这有时可行   因为大多数设备都带有处理裁剪的应用程序   与该插件(Google Plus Photos)兼容的方式,但是   依靠事实是不明智的。如果图像编辑是   对您的应用程序至关重要,请考虑寻求第三方库   或提供自己的图片编辑工具的插件   强大的解决方案。