>source

패턴 감지와 관련된 프로젝트를 진행 중입니다. 입력 이미지를 특정 크기로 조정하고 픽셀 색상을 테스트해야합니다.

java.awt.Image를 가져 와서 크기를 조정 한 다음 BufferedImage로 변환하여 각 독립 픽셀의 RGB 값을 테스트했습니다. 그러나 BufferedImage를 이미지로 캐스트하는 것은 작동하지 않습니다.

java.awt.Image가 각 개별 픽셀의 색상 값에 액세스 할 수 없으므로 BufferedImage의 .getRBG 함수를 사용해야합니다. 그러나 BufferedImage의 크기를 조정할 수 없으므로 java.awt.Image를 가져와야합니다. BufferedImage 크기 조정에 대한 조사를했지만 결과는 실제 이미지가 아니라 화면 크기를 조정하는 것입니다. 화면에 BufferedImage를 표시하려고하지 않고 이미지의 각 픽셀의 색상 값에 액세스하려고합니다.

다음은 내 문제를 해결할 수있는 방법입니다. 방법을 제안하십시오 ...

  • BufferedImage의 스케일 조정 (화면에 그리기를 포함하지 않고 BufferedImage 자체의 크기를 조정하기 만하면됩니다)

또는

  • java.awt.Image에서 픽셀의 색상 값에 액세스

Image img = ImageIO.read(inputFile).getScaledInstance(400, 400, 0);
BufferedImage scaledImage = (BufferedImage)img;

BufferedImage를 java.awt.Image로 캐스트 할 수 없기 때문에 다음 코드는 컴파일되지 않습니다

  • 답변 # 1

    String imagePath = "path/to/your/image.jpg";
    BufferedImage myPicture = ImageIO.read(new File(imagePath));
    
    

    ImageIO를 사용할 수 있습니다.이 설명서를 확인하십시오 : 이미지를 BufferedImage로 변환

    이 놀라운 튜토리얼 또는 https://www.baeldung.com/java-images 또는 2012 년에도 이와 동일한 질문 : 이미지를 BufferedImage로 변환

    질문에 답이 없으면 알려주세요.

    이미지 크기를 조정하려면 다음과 같이 사용해보십시오.

    public static BufferedImage resize(BufferedImage img, int newW, int newH) { 
        Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH);
        BufferedImage dimg = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);
        Graphics2D g2d = dimg.createGraphics();
        g2d.drawImage(tmp, 0, 0, null);
        g2d.dispose();
        return dimg;
    } 
    
    

    이 답변은 다음과 같습니다 : Bufferedimage resize

관련 자료

  • 이전 Azure에서는 SQL Server 장애 조치가 발생했을 때 경고 또는 알림을 어떻게 구성 할 수 있습니까?
  • 다음 graphql - refetchQueries와 함께 Apollo Angular에서 optimisticResponse를 사용하는 방법