У меня есть куча фотографий, отсортированных в папке, так что всегда есть одна фотография типа A
и одна фотография типа B
сразу после этого.Ввод нескольких изображений вместе в один
К сожалению, некоторые из них необходимо было повернуть, и я сделал это, используя стандартный проводник Windows.
Мне нужно, чтобы сочетал каждую пару фотографий A и B с новой фотографией, чтобы первая фотография источника отображалась над вторым. Обе фотографии имеют одинаковую ширину.
Вот код:
File first = ...;
File second = ...;
BufferedImage A = ImageIO.read(first);
BufferedImage B = ImageIO.read(second);
int resultHeight = A.getHeight() + B.getHeight();
int resultWidth = A.getWidth();
BufferedImage combined = new BufferedImage(resultWidth, resultHeight, BufferedImage.TYPE_INT_ARGB);
Graphics g = combined.getGraphics();
g.drawImage(A, 0, 0, null);
g.drawImage(B, 0, A.getHeight(), null);
g.dispose();
ImageIO.write(combined, "PNG", new File(destDirectory, destName));
К сожалению, несмотря на все фотографии, кажется, имеют одинаковую ориентацию при просмотре с Windows app
, они вращаются по-разному в результирующих фотографиях. Я знаю, что есть какой-то флаг, который, кажется, игнорируется BufferedImage.
Как я могу определить этот флаг и в конечном итоге повернуть фотографию по мере необходимости перед объединением? Благодаря!
Если вы извлечете поворот, вы можете использовать [этот ответ] (http://stackoverflow.com/questions/9749121/java-image-rotation-with-affinetransform-outputs-black-image-but-works-well- чтобы вращать изображение. – fhofmann
Спасибо! Я использовал эту библиотеку, и это кажется многообещающим. –