Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
给定一个javafx.scene.image.image对象,旋转它并生成一个旋转的javafx.scene.image.image对象_Java_Image_Javafx_Transform_Exif - Fatal编程技术网

给定一个javafx.scene.image.image对象,旋转它并生成一个旋转的javafx.scene.image.image对象

给定一个javafx.scene.image.image对象,旋转它并生成一个旋转的javafx.scene.image.image对象,java,image,javafx,transform,exif,Java,Image,Javafx,Transform,Exif,我有创建图像的代码:(muimg是javafx.scene.Image.Image) 这很好,但它确实忽略了exif TAG_的方向,因此在纵向模式下拍摄的手机照片看起来不正确 当我更改加载方法时,我能够读取此标记并将结果保存为int(1-8),如下所示: byte bb[] = FileUtilities.readFile(p_Fil); getOrientation(new ByteArrayInputStream(bb),p_Fil); m_img = new Image(new Byte

我有创建图像的代码:(muimg是
javafx.scene.Image.Image

这很好,但它确实忽略了exif TAG_的方向,因此在纵向模式下拍摄的手机照片看起来不正确

当我更改加载方法时,我能够读取此标记并将结果保存为int(1-8),如下所示:

byte bb[] = FileUtilities.readFile(p_Fil);
getOrientation(new ByteArrayInputStream(bb),p_Fil);
m_img = new Image(new ByteArrayInputStream(bb));
if (m_orientation==1) return; //1 means no transformation required
如果m_方向为1,则它是正确的,因此无需采取进一步措施

但是现在我需要根据返回的数字对图像进行变换。(旋转、翻转等)

我认为javafx.scene.transform.Rotate类应该对我有所帮助。
任何人都可以提供示例代码,在给定图像对象的情况下,您可以输出另一个旋转的图像对象。

您必须依靠AWT来实现这一点:

我建议采用以下方法:

public BufferedImage getRotatedImage(BufferedImage bufferedImage, int angle) {
     AffineTransform transform = new AffineTransform();
     transform.rotate(angle);
     AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
     bufferedImage = op.filter(bufferedImage, null);
     return bufferedImage;
}
然后:


两年后,但无论如何:
ImageView
提供了一种
setRotate
方法。那会有帮助吗?
public BufferedImage getRotatedImage(BufferedImage bufferedImage, int angle) {
     AffineTransform transform = new AffineTransform();
     transform.rotate(angle);
     AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
     bufferedImage = op.filter(bufferedImage, null);
     return bufferedImage;
}
BufferedImage buffImg= SwingFXUtils.fromFXImage(m_img, null);
buffImg = getRotatedImage(buffImage, 90); //or other angle if needed be
m_img = SwingFXUtils.toFXImage(buffImg, null);