Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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
使用imgscalr在java中调整纵向图像大小,但最终输出为横向。如何保证它保持相同的方向?_Java_Resize_Image Manipulation_Thumbnails_Scaletransform - Fatal编程技术网

使用imgscalr在java中调整纵向图像大小,但最终输出为横向。如何保证它保持相同的方向?

使用imgscalr在java中调整纵向图像大小,但最终输出为横向。如何保证它保持相同的方向?,java,resize,image-manipulation,thumbnails,scaletransform,Java,Resize,Image Manipulation,Thumbnails,Scaletransform,我正在使用imgscalr在Grails应用程序中创建缩放图像。代码如下: BufferedImage sourceImg = ImageIO.read(new File("/tmp" + File.separator + filename)) BufferedImage destImg = null if(sourceImg.height >= sourceImg.width){ destImg = Scalr.resize(sourceImg, Scalr.Method.AU

我正在使用imgscalr在Grails应用程序中创建缩放图像。代码如下:

BufferedImage sourceImg = ImageIO.read(new File("/tmp" + File.separator + filename))
BufferedImage destImg = null

if(sourceImg.height >= sourceImg.width){
    destImg = Scalr.resize(sourceImg, Scalr.Method.AUTOMATIC, Scalr.Mode.FIT_TO_HEIGHT, 800) 
}
else{
    destImg = Scalr.resize(sourceImg, Scalr.Method.AUTOMATIC, Scalr.Mode.FIT_TO_WIDTH, 800)
}

File newFile = new File("/tmp/processed" + File.separator + filename)
String formatName = foto.nomeArquivo.substring(foto.nomeArquivo.lastIndexOf('.')+1);
ImageIO.write(imgDestino, formatName.toUpperCase(), newFile)
到目前为止,请不要介意formatName。。。。我仍在测试imgscalr库

我所有的图像都以横向方向结束。我正在Mac操作系统中开发


谢谢

Felipe,我是imgscalr的作者;我认为可能发生的情况是,您的图片实际上处于横向模式,但图像中的方向Exif数据表明它应该旋转,因此当您在图片查看器中查看它时,它以纵向模式显示(但实际上是在相机转向侧面时拍摄的)。在生成缩放副本时,IMGSCAR目前不考虑原始图像中的EXIF数据,但我认为它需要。我已经提交了一个问题,试图在未来的版本中解决这个问题。Riyad,非常感谢你的评论。我尝试了其他一些图像,你一定是对的。其中一些imgscalr正在以正确的方向缩放。所以问题确实出在原始文件上。但如果你能解决这个问题,那就太好了。我正在尝试一个100%的java解决方案,而不是依赖ImageMagick。不管怎样,菲利佩,我很快就会把那个功能放进去;这需要一点良好的工程和思考,所以这不是一个快速修复,但我会确保它在那里,并在一个好的/紧凑的方式完成。谢谢你的反馈!Felipe,我已经为您找到了一个解决方法,它应该可以快速轻松地工作,直到我能够找到一种方法来解决这个问题,而不会使API膨胀。该库可以基于EXIF方向信息进行无损转换(),然后将图像交给imgscalr进行缩放。Felipe,只是想让您知道imgscalr 3.2已经发布(),并添加了手动旋转支持(以及其他很酷的功能)。我现在正在开发imgscalr 4.0,它通过可选的ext JAR库添加了对新的自动旋转模式的支持,该模式利用Phil Harvey的ExifTool从图像读取EXIF——这需要外部安装ExifTool,但它是开源的,在所有平台上运行,是最健壮的EXIF库。插件库还将提供一个到ET的接口,供任何人使用