GraphicsMagickのクロップ:トリミングされるものを表示します
-
20-12-2019 - |
質問
私は写真アプリケーションに取り組んでいて、私はグラフィック/ imageMagickで次のように解決するべきですか?
- 解像度の写真を考える:2048x1536
- 指定された解像度を考える:1864x1228
- 画像のサイズを変更し、指定された解像度を画像で記入してください(今は1864x1398)
- 元の画像の領域を強調表示するとトリミングされます(1864x1228)
- GMでIM4JAVAを使用しています。私はコマンドラインソリューションを受け入れます(そして私はim4javaで把握して投稿します)
- 水平画像についての会話を制限することができ、垂直操作 を把握することができます
私は画像を正しくサイズ変更して作った作業解を持っています:
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で行うことですが、それでもまとめるようですが、それでもまとめるようです。
注:
コメントは高く評価されます。
解決
Oneliner ImageMagick convert(Line Breaksを削除):
convert ( in.jpg -resize 1864x1228^ -fill white -colorize 50% )
( in.jpg -resize 1864x1228^ -gravity center -crop 1864x1228+0+0 )
-gravity center -composite out.jpg
.
bashでは、()
を使用して\
文字をエスケープする必要があります。
サブ操作で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
.
注:
- それでも赤い枠が含まれていません(私は2番目の画像にのみを追加することはできません)。
- 私は、アルファチャンネルで遊ぶのではなく、「フェードツーホワイト」効果を使用することを決定しました。
例:
所属していません StackOverflow