「docx」と「pictures」の関係を見てみましょう。
私が理解しているように、*.docx
元の写真(Wordにコピー/貼り付けた瞬間の写真)を保存します。そして、その画像を使用するたびに、Word は元の画像への "リンク" を作成します。
ただし、その画像に変更を加えると (サイズ変更、トリミング、色の変更など)、Word は変更を記憶し、"リンク" を変更します (特別なタグを追加します)。写真の品質を失うことは決してないので、それは素晴らしいことです!
*.docx ファイルから画像を取得しましょう。そのために、次のコード スニペットを使用します。
XWPFDocument wordDoc = new XWPFDocument( pathToFile );
for (XWPFParagraph p : wordDoc.getParagraphs()) {
for (XWPFRun run : p.getRuns()) {
for (XWPFPicture pic : run.getEmbeddedPictures()) {
byte [] img = pic.getPictureData().getData()
File outputfile = new File ( pathToOutputFile );
BufferedImage image = ImageIO.read(new ByteArrayInputStream(img));
ImageIO.write(image , "png", outputfile);
}
}
}
しかし、この方法で元の写真を *.docx から取得します。たとえば、あなたがあなたの写真から一部を切り取って残りを私にくれた場合、私はいつもoutputfile
. それは良いことではありません。
誰かが Word で行ったすべての変更を含む画像を取得する方法を知っている人はいますか?