5

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

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

我完整的 API 代码是:

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

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

4

2 回答 2

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
});

宽度和高度似乎与纵横比有关,而不是与图片的尺寸有关。

于 2013-08-22T18:41:32.770 回答
2

所以我一直在玩这个(仅限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:拍照并返回缩略图(调整图片大小)

要获得更小的图像,您可以通过将 targetHeight 和 targetWidth 值与 CameraOptions 对象一起传递来返回调整大小的图像。在此示例中,您调整返回图像的大小以适合 100 像素乘 100 像素的框(保持纵横比,因此 100 像素是高度或宽度,以源中较大者为准)

使用设置 2,照片似乎照常拍摄,然后当您选择接受或重新拍摄时,在拍摄照片后,在照片中心覆盖指定尺寸的黄色框,从而显示您在批准后的裁剪由用户。所以这里的导入区别是它最初不会拍一张方形照片,但它会返回一张。

请注意,设置 2 可能不适用于 Android

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

于 2019-01-18T03:34:16.353 回答