如何在Android和iPhone上拍摄占据整个屏幕的图像?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Android和iPhone上拍摄占据整个屏幕的图像?相关的知识,希望对你有一定的参考价值。
我希望在可以覆盖整个屏幕的手机上拍照,这是在Snapchat应用程序中完成的。 android和iPhone拍摄的图像仅覆盖屏幕中央的一部分(可能是有意的,以便菜单栏可以覆盖其余部分)。
如果您在Snapchat中拍摄图像 - 并将其导出到相机胶卷,您将看到图像保持放大 - 覆盖整个屏幕。这就是我想拍摄照片的方式。 (现在它们会因为图像太小而变形 - 我尝试使用整个屏幕显示它们)
我正在使用Gluon和PicturesService:http://docs.gluonhq.com/charm/javadoc/4.1.0-SNAPSHOT/index.html?com/gluonhq/charm/down/plugins/PicturesService.html
但是我假设您需要在更深层次中调整内容以实现此目的。有人能指出我正确的方向吗?
ios上的相机宽高比和屏幕宽高比不同。这就是为什么你不能完全显示图像,同时避免变形。但是在视频中它与屏幕宽高比相匹配。所以我认为Snapchat以某种方式在视频模式下拍摄了截图,或者一个单帧从相机中取出。
然而,看着我的Android手机 - 视频模式下的摄像头并没有在整个屏幕上显示(没有匹配的宽高比)。我很惊讶。我在上面下载了Snapchat,发现快照仍然覆盖了整个屏幕 - 我更加惊讶。
然后我开始意识到两侧的按扣被切断了。所以他们所做的就是简单地剪切原始图像,直到它与显示器的宽高比相匹配。
以下是我切割Android图像的方法:
public Image cutImageFit(Scene scene, Image image){
PixelReader pixelReader = image.getPixelReader();
double sceneRatio = scene.getWidth() / scene.getHeight();
double width = image.getWidth();
double height = image.getHeight();
double ratio = width / height;
// System.out.println("Scene is " + scene.getWidth() + " and " + scene.getHeight());
// System.out.println("sceneRatio " + sceneRatio);
// System.out.println("ratio is " + ratio);
if(sceneRatio > 1){
double cutTo = width / sceneRatio;
height = cutTo;
}
else if(sceneRatio < 1){
double cutTo = height * sceneRatio;
width = cutTo;
}
else{
// Square scene...
}
Double d = width;
int w = d.intValue();
d = height;
int h = d.intValue();
System.out.println("new width " + w + " and height " + h + " for the image");
WritableImage writableImage = new WritableImage(pixelReader, 0, 0, w, h);
return writableImage;
}
...你也可以编辑方法,以便它切割双方,而不是只切断一方。这很有帮助:Effective image cropping in JavaFX
但是,当谈到iOS图像时,我遇到了问题。图像必须旋转。如果它是垂直拍摄的,那就是。如果有人可以帮助我,我会很高兴的!
我可以通过使用imageView旋转图像然后拍摄javafx快照来解决后一个问题,使用方法而不是iOS原始图像作为image
参数传递。这样,本地坐标系统在旋转后也与进入系统中的其余GUI软线保持“同步”。因此实际上重新标记了x和y轴。
编辑:Android defualt相机实际上包含一个我不知道的“全屏”设置。因此,必须选择该设置。它产生一个白色区域,但我认为应用程序无法显示在状态栏区域。在应用程序可以执行的其他默认照片查看器中,一切看起来都很好(在状态栏下方显示图像)。因此,使用上面的方法可以裁剪图像 - 或者可以创建FullscreenService
来显示拍摄的图像,使用独立的单独Android图层,由José在问题的评论中建议。
当涉及到iOS时,可能会使用相机第三方应用程序,这样做 - 或编辑其中连接有本机ObjectiveC代码的IOSPicturesService
。
以上是关于如何在Android和iPhone上拍摄占据整个屏幕的图像?的主要内容,如果未能解决你的问题,请参考以下文章