ffmepgはより5画像合成写真を学び始めました

1.準備

シーンは:このような要求、変化の各時間の1日で見てみましょう、と絵に反映され、切断および合成技術の使用を必要とする画像を発生することがあります。

まず、私たちは一日の画像のすべての時間を必要とする、絵をカットした後、24時間後には完全な画像にスプライス

オリジナル:

 チャートを切断:

写真を切断、参照https://blog.csdn.net/qq_16855077/article/details/90378173

 

これら二つの場所12 1.JPG 13 2.JPG 14 3.JPG、図のように得られた画像にコード。 

 

図合成:

 2.コード


  
  
  1. 以下のためのパッケージ変更 com.qihui.qxj.utils。
  2. 輸入 java.awt.image.BufferedImage;
  3. インポート のjava.io.File;
  4. 輸入 javax.imageio.ImageIO;
  5. / **
  6. ※画像は、大きな画像の幅と同一に形成するために一緒に複数の画像をステッチ
  7. *
  8. * @authorの管理者
  9. *
  10. * /
  11. パブリック クラス CreateBigImage {
  12. パブリック 静的 ボイド メイン(文字列[]引数) {
  13. //画像の同じ幅を取得します
  14. String img1 = "D:/a/1.jpg";
  15. String img2 = "D:/a/2.jpg";
  16. String img3 = "D:/a/3.jpg";
  17. String[] imgs = new String[] { img1, img2, img3 };
  18. //Image.mergeImage(imgs, 1, "D:/big.jpg");
  19. // //图片拼接
  20. merge(imgs, "jpg", "D:/big.jpg");
  21. }
  22. /**
  23. * Java拼接多张图片
  24. *
  25. * @param pics:图片源文件
  26. * (必须要宽度一样),如: String img1 = "D:/imgs/3.jpg"; String img2 =
  27. * "D:/imgs/3.jpg"; String img3 = "D:/imgs/big.jpg"; String[]
  28. * pics = new String[]{img1,img2,img3};
  29. * @param type
  30. * :图片输出类型(jpg,png,jpeg...)
  31. * @param dst_pic
  32. * :图片输出绝对路径,如 String dst_pic="D:/imgs/big2.jpg";
  33. * @return
  34. */
  35. public static boolean merge(String[] pics, String type, String dst_pic) {
  36. int len = pics.length; // 图片文件个数
  37. if (len < 1) {
  38. System.out.println( "pics len < 1");
  39. return false;
  40. }
  41. File[] src = new File[len];
  42. BufferedImage[] images = new BufferedImage[len];
  43. int[][] ImageArrays = new int[len][];
  44. for ( int i = 0; i < len; i++) {
  45. try {
  46. src[i] = new File(pics[i]);
  47. images[i] = ImageIO.read(src[i]);
  48. } catch (Exception e) {
  49. e.printStackTrace();
  50. return false;
  51. }
  52. int width = images[i].getWidth();
  53. int height = images[i].getHeight();
  54. ImageArrays[i] = new int[width * height]; // 从图片中读取RGB
  55. ImageArrays[i] = images[i].getRGB( 0, 0, width, height, ImageArrays[i], 0, width);
  56. }
  57. int dst_width = 0;
  58. int dst_height = 0;
  59. for ( int i = 0; i < images.length; i++) {
  60. dst_width += images[i].getWidth();
  61. dst_height = dst_height > images[i].getHeight() ? dst_height : images[i].getHeight();
  62. }
  63. System.out.println(dst_width);
  64. System.out.println(dst_height);
  65. // 生成新图片
  66. try {
  67. BufferedImage ImageNew = new BufferedImage(dst_width, dst_height, BufferedImage.TYPE_INT_RGB);
  68. int width_i = 0;
  69. for ( int i = 0; i < images.length; i++) {
  70. ImageNew.setRGB(width_i, 0, images[i].getWidth(), dst_height, ImageArrays[i], 0, images[i].getWidth());
  71. width_i += images[i].getWidth();
  72. }
  73. File outFile = new File(dst_pic);
  74. ImageIO.write(ImageNew, type, outFile); // 写图片
  75. } catch (Exception e) {
  76. e.printStackTrace();
  77. return false;
  78. }
  79. return true;
  80. }
  81. }

到这里,图片的合成就完成勒。

转载自:https://blog.csdn.net/qq_16855077/article/details/90408532

发布了42 篇原创文章 · 获赞 115 · 访问量 1万+

1.准备

おすすめ

転載: blog.csdn.net/luoyong_blog/article/details/104497537