在CodenameOne中调整照片大小而不丢失正确的大小

在CodenameOne中调整照片大小而不丢失正确的大小,codenameone,Codenameone,我正在使用此代码捕获一张照片 m_photoFile = Capture.capturePhoto(1920, -1); CN1没有强制执行1920的宽度,至少在Android手机中是这样。因此,我需要手动调整图像大小并存储图像,以符合我的1920x1080要求 如果我试着这样做,我的照片就会被破坏 photoFileImage = photoFileImage.subImage(0, 0, 1920, 1080, false); OutputStream fos = fss.openOutp

我正在使用此代码捕获一张照片

m_photoFile = Capture.capturePhoto(1920, -1);
CN1没有强制执行1920的宽度,至少在Android手机中是这样。因此,我需要手动调整图像大小并存储图像,以符合我的1920x1080要求

如果我试着这样做,我的照片就会被破坏

photoFileImage = photoFileImage.subImage(0, 0, 1920, 1080, false);
OutputStream fos = fss.openOutputStream(m_photoFile );
imageIO.save(photoFileImage, fos, ImageIO.FORMAT_JPEG, 1);
我想我的照片被调整大小和任何多余的交叉。。。 因此,如果我有一个1920x1100的宽度,在高度额外的20像素,我希望他们交叉。。。如果可能10在顶部,10在底部

我不确定我该怎么做

请帮忙 谢谢

试试这个:

String m_photoFile = Capture.capturePhoto();
Image image = Image.createImage(m_photoFile);
if (image.getWidth() > image.getHeight()) {
    image = image.scaledLargerRatio(1920, 1080);
    photoFileImage = image.subImage((int) (image.getWidth() - 1080) / 2, 0, image.getHeight(), image.getHeight(), true);
} else {
    image = image.scaledLargerRatio(1080, 1920);
    photoFileImage = image.subImage(0, (int) (image.getHeight() - 1080) / 2, image.getWidth(), image.getWidth(), true);
}

另外,photoFileImage.getHeight()和photoFileImage.getWidth()对于------Image photoFileImage=Image.createImage(m_photoFile)都返回0-----设备是什么?它创建的图像有多大?Android有点棘手,因为有些设备可以捕获太大而无法加载的图像。我们有很多内置的解决办法来解决这些奇怪的问题,但在最近的更新中可能有一些问题被打破了。我建议不要使用子映像或类似的缩放调用,因为这些调用会将整个映像加载到RAM中,并且可能非常昂贵。试着总是用ImageIO来拍摄相机拍摄的任何东西谢谢Shai,我推广了Diamond关于比例更大的建议。。。这对我有用。。。无论如何,我必须在屏幕上显示图像。这在模拟器中可以工作,但在Android手机中Image.getWidth和Image.getHeight都返回0给我:(公共图像缩放比例(int-width,in-height)--缩放图像,同时将纵横比保持为更大尺寸的图像| |很好发现,这很有用。似乎我无法投票赞成答案…虽然我使用了缩放的更大比例,但没有w>h比较,并且正在为我工作。非常感谢。应该有一个“禁用”您可以单击以接受答案旁边的复选框