Image processing 当从stdin传递字节并从stdout读取字节时,graphics magicks旋转90

Image processing 当从stdin传递字节并从stdout读取字节时,graphics magicks旋转90,image-processing,computer-vision,imagemagick,graphicsmagick,Image Processing,Computer Vision,Imagemagick,Graphicsmagick,当我试图传递一个exif旋转为90的jpeg并尝试调整大小时,我的调整大小图像会损坏。目前的解决方案是将图像作为文件传递,并将输出作为文件读取。目前,我正在直接从Java processBuilder读取和写入stdin和stdout中的字节 有人知道为什么会出现这个问题吗 gm转换-限制螺纹4-限制内存512M-限制映射1024M-限制磁盘1024M-尺寸2048x1458-展平-锐化1.00x0.95-旋转90-缩放“2048x2048>”+轮廓!icm,*-隔行扫描无-类型TrueColo

当我试图传递一个exif旋转为90的jpeg并尝试调整大小时,我的调整大小图像会损坏。目前的解决方案是将图像作为文件传递,并将输出作为文件读取。目前,我正在直接从Java processBuilder读取和写入stdin和stdout中的字节

有人知道为什么会出现这个问题吗

gm转换-限制螺纹4-限制内存512M-限制映射1024M-限制磁盘1024M-尺寸2048x1458-展平-锐化1.00x0.95-旋转90-缩放“2048x2048>”+轮廓!icm,*-隔行扫描无-类型TrueColor-质量93-采样因子1x1 jpeg:-

更新: 这与旋转无关。 问题是因为JPEG在文件末尾有一些预告片

。。。。。。。。。 JPEG RST7 JPEG RST0 JPEG EOI 三星拖车(偏移量0x1ba3ed处的129字节):

通用汽车识别给出以下结果

旋转_1_37658078940_605a46_o.jpg JPEG 2592x1944+0+0 DirectClass 8位1.7M 0.000u 0:01


gm识别:顺序JPEG(旋转)的SOS参数无效。

图形Magick转换没有问题。redirectError流被设置为true,因此stderr使用stdout(字节)进行clubbed

图形Magick convert没有问题。redirectError流被设置为true,因此stderr使用stdout(字节)进行clubbed

腐败与轮换有关吗?是的。我只得到了270度和90度旋转的图案。如果你使用ImageMagick,有一个-auto-oriente命令,告诉图像从EXIF方向获得正确的旋转,纠正该旋转。然后可以添加进一步的旋转。我不知道graphicsMagick是否有类似的功能。你知道gm中有-auto-orient和-orient命令,我试过这两种。结果与-rotation尝试移除
-尺寸2048x1458
-展平
-类型truecolor
-交错无
相同,因为它们可能是多余的。然后尝试删除所有限制,只留下
-threads 1
,看看这是否有帮助。。。只是试着调试。损坏与旋转有关吗?是的。我只得到了270度和90度旋转的图案。如果你使用ImageMagick,有一个-auto-oriente命令,告诉图像从EXIF方向获得正确的旋转,纠正该旋转。然后可以添加进一步的旋转。我不知道graphicsMagick是否有类似的功能。你知道gm中有-auto-orient和-orient命令,我试过这两种。结果与-rotation尝试移除
-尺寸2048x1458
-展平
-类型truecolor
-交错无
相同,因为它们可能是多余的。然后尝试删除所有限制,只留下
-threads 1
,看看这是否有帮助。。。只是想调试一下。