자바 에서 그림 을 회전 시 키 는 효율 적 인 방법

1812 단어 Java
최근 에 프로젝트 를 하려 면 그림 을 시계 방향 으로 90 도 회전 시 켜 야 한다.그리고 인터넷 에서 검색 하고 찾 은 코드 는 오래된 그림 의 모든 픽 셀 을 새 그림 의 해당 위치 로 복사 하 는 경우 가 많다.이런 방식 은 효율 이 너무 낮다.예 를 들 어 2000 만 화소 의 그림 은 2000 만 번 을 순환 해서 회전 작업 을 완성 해 야 한다.
그리고 저 는 2D 그래 픽 라 이브 러 리 의 행렬 에 따라 방향 을 바 꾸 고 자바 에서 모방 변환 을 사용 하여 그림 을 회전 시 키 고 저장 합 니 다.
코드 는 다음 과 같 습 니 다:
public class ImageRotateUtils {
    //       90        
    public static void rotateClockwise90(File picFile, String outFilePath) throws IOException {
        //       
        BufferedImage bufferedImage = ImageIO.read(picFile);

        //     、 
        int width = bufferedImage.getWidth();
        int height = bufferedImage.getHeight();

        //        (     90   ),  、        
        BufferedImage rotateImg = new BufferedImage(height, width, bufferedImage.getType());

        //    (               ,             )
        AffineTransform trans = new AffineTransform();
        //2.        ,       90           ,       
        trans.translate(height, 0);
        //1.         90 ,      ,     
        trans.rotate(Math.PI*0.5);

        //         “    ”,           
        Graphics2D graphics2D = (Graphics2D)rotateImg.getGraphics();
        //   ,       ,       、  
        graphics2D.setTransform(trans);

        //    ,       (0,0)          
        graphics2D.drawImage(bufferedImage, 0, 0, null);

        //    ,          , “.jpg”          
        ImageIO.write(rotateImg, "jpg", new File(outFilePath));
    }

public static void main(String[] args) {
        File origin = new File("D:\\1.jpg");

        try {
            rotateClockwise90(origin, "D:\\1_rotate.jpg");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

이런 방식 의 효율 은 픽 셀 처리 방식 보다 높 아야 한다.필요 한 친구 가 수정 해서 사용 하 세 요.

좋은 웹페이지 즐겨찾기