1

저는 사진 응용 프로그램을 만들고 있는데 Graphics/ImageMagick으로 어떻게 해결해야하는지 조언이 필요합니다. 최대 2048x1536 GraphicsMagick 자르기 :자를 내용을 표시합니다.

  • 감안할 때 지정된 해상도 : 1864x1228
  • 이미지 크기를 조정하고
  • 강조 원래의 영역 (지금은 1864x1398이야) 이미지로 지정된 해상도를 채우기

    1. 해상도와 함께 사진을 감안할 때 이미지 (1864x1228에) 잘립니다

    내가 크기를 조정하고 적절하게 이미지를 잘라 작업 솔루션이 있습니다

    IMOperation resizeOp = new IMOperation(); 
    resizeOp.addImage(); 
    resizeOp.resize(MAX_WIDTH, MAX_HEIGHT, "^"); 
    resizeOp.gravity("center"); //centered image with crop the top/bottom parts 
    resizeOp.crop(MAX_WIDTH, MAX_HEIGHT, 0, 0); 
    resizeOp.addImage(); 
    
    ConvertCmd cmd = new ConvertCmd(true); 
    cmd.run(resizeOp, fileName, outputFileName); //cropped, center filled image (1864x1228) 
    

    질문은입니다. 자른 버전 대신 전체 이미지를 표시하고 이미지 영역을 강조 표시하면 잘립니다. 자른 이미지 주위에 빨간색 경계가있는 것을 선호하고 알파 레이어가있는 자른 부분으로 표시합니다.

    나는 싫어하는 아이디어가 있습니다. 원본에서 알파 레이어로 이미지를 생성하고 빨간색 테두리로 자른 이미지를 넣으십시오. 그것은 최적의 솔루션이되지 않는 것 :) 내 다른 생각은 javafx imageviews와 함께 이것을하는 것입니다,하지만 그것도 suboptimal 보인다.

    참고 : 나는 GM과 im4java을 사용하고

    • .

    모든 의견 것 내가 수직 작업을 알아낼 수,

  • 우리는 수평 이미지에 대한 대화를 제한 할 수 있습니다 (내가 알아낼 im4java에 게재됩니다) 나도 명령 줄 솔루션을 수용 높게 평가받습니다.

  • 답변

    0

    oneliner의 ImageMagick이 변환 (줄 바꿈을 제거) : 배쉬에서

    convert (in.jpg -resize 1864x1228^ -fill white -colorize 50%) 
          (in.jpg -resize 1864x1228^ -gravity center -crop 1864x1228+0+0) 
          -gravity center -composite out.jpg 
    

    , 당신은 \으로 () 문자를 이스케이프해야합니다!

    나는 서브 작업과 im4java에 그것을 해결 :

    IMOperation op = new IMOperation(); 
    
        op.openOperation(); 
        op.addImage(); //input image 
        op.resize(MAX_WIDTH, MAX_HEIGHT, "^"); 
        op.fill("white"); 
        op.colorize(50); 
        op.closeOperation(); 
    
        op.openOperation(); 
        op.addImage(); //input image 
        op.resize(MAX_WIDTH, MAX_HEIGHT, "^"); 
        op.gravity(GRAVITY_OPT_CENTER); //centered image with crop the top/bottom parts 
        op.crop(MAX_WIDTH, MAX_HEIGHT, 0, 0); 
        op.closeOperation(); 
    
        op.gravity(GRAVITY_OPT_CENTER); 
        op.composite(); 
        op.addImage(); // output image 
    

    주 :

    • 그것은 여전히 ​​(나는 단지 두 번째 이미지에 국경 를 추가 할 수 없습니다 빨간색 테두리가 포함되어 있지 않습니다).
    • 알파 채널로 연주하는 대신 "흰색으로 퇴색"효과를 사용하기로 결정했습니다.

    예 :

    관련 문제