2013-02-10 2 views
2

ImageMagick의 Java 포트 인 JMagick을 사용하고 있습니다. 새로운 이미지를 만들고 임의의 텍스트 청크를 쓸 수 있어야합니다. 문서는 매우 열악하고 관리 할 수 ​​있어야합니다. 멀리 IO에서 오는 이미지에 텍스트를 작성하는 것입니다. 또한, 모든 예제에서 나는 그것이 새로운 이미지 데이터를 작성하기 전에 첫 번째 작업처럼 보이지만 항상 ImageInfo 인스턴스에 기존 이미지를로드하는 것입니다. 어떻게해야합니까? JMagick을 사용하여 처음부터 이미지를 만든 다음 그 안에 텍스트를 씁니다. 아마 IO의 입력 이미지에 대한 기대로JMagick으로 처음부터 이미지 만들기

try { 

     ImageInfo info = new ImageInfo(); 
     info.setSize("512x512"); 
     info.setUnits(ResolutionType.PixelsPerInchResolution); 
     info.setColorspace(ColorspaceType.RGBColorspace); 
     info.setBorderColor(PixelPacket.queryColorDatabase("red")); 
     info.setDepth(8); 
     BufferedImage img = new BufferedImage(512,512,BufferedImage.TYPE_4BYTE_ABGR); 
     byte[] imageBytes = ((DataBufferByte) img.getData().getDataBuffer()).getData(); 
     MagickImage mimage = new MagickImage(info,imageBytes); 

     DrawInfo aInfo = new DrawInfo(info); 
     aInfo.setFill(PixelPacket.queryColorDatabase("green")); 
     aInfo.setUnderColor(PixelPacket.queryColorDatabase("yellow")); 
     aInfo.setOpacity(0); 
     aInfo.setPointsize(36); 
     aInfo.setFont("Arial"); 
     aInfo.setTextAntialias(true); 

     aInfo.setText("JMagick Tutorial"); 
     aInfo.setGeometry("+40+40"); 

     mimage.annotateImage(aInfo); 

     mimage.setFileName("text.jpg"); 
     mimage.writeImage(info); 


    } catch (MagickException ex) { 
     Logger.getLogger(LWJGL_IDOMOO_SIMPLE_TEST.class.getName()).log(Level.SEVERE, null, ex); 
    } 

그것은 작동하지 않습니다가, JVM이 액세스 위반으로 충돌 : 여기

내가 지금 할 것입니다.

+0

마지막으로이 문제를 해결 했습니까? – jarandaf

+0

아니요. 떠났습니다. C++로 바뀌 었습니다. –

답변

1

나는 대답하기에는 너무 늦을 수도 있음을 알고 있습니다.이 간단한 코드를 작성하여 요청한 시나리오를 작성하십시오.

private void createEmptyImage() throws MagickException{ 
    ImageInfo newImageiInfo=new ImageInfo(); 
    newImageiInfo.setFileName("src\\main\\resources\\test.jpg"); 
    newImageiInfo.setSize("512x512"); 
    newImageiInfo.setUnits(ResolutionType.PixelsPerInchResolution); 
    newImageiInfo.setColorspace(ColorspaceType.RGBColorspace); 
    newImageiInfo.setBorderColor(PixelPacket.queryColorDatabase("red")); 
    newImageiInfo.setDepth(8); 

    MagickImage addTextImage = new MagickImage(); 
    addTextImage.allocateImage(newImageiInfo); 
    addTextImage.setYResolution(480); 
    addTextImage.setXResolution(640); 
    addTextImage.writeImage(newImageiInfo); 


    DrawInfo aInfo = new DrawInfo(newImageiInfo); 

    aInfo.setFill(PixelPacket.queryColorDatabase("green")); 
    aInfo.setUnderColor(PixelPacket.queryColorDatabase("yellow")); 
    aInfo.setOpacity(0); 
    aInfo.setPointsize(36); 
    aInfo.setFont("Arial"); 
    aInfo.setTextAntialias(true); 
    aInfo.setText("JMagick Tutorial"); 
    aInfo.setGeometry("+50+50"); 

    addTextImage.annotateImage(aInfo); 
    addTextImage.setFileName("src\\main\\resources\\test-result.jpg"); 
    addTextImage.writeImage(newImageiInfo); 
} 
관련 문제