質問するログイン新規登録

質問編集履歴

2

わかりにくかった説明を一部修正しました

2019/10/21 22:30

投稿

takatakat
takatakat

スコア5

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,8 @@
3
3
  しかし出力後にmacbookのpreviewの「pdfとして書き出す」のメニューから画像のサイズを変更して
4
4
  デフォルトのA4サイズにすると、画質を落とさずにピクセル値が変更できています。またこのときデータ容量は変わっていません。
5
5
 
6
+ 後者の処理によって画質を落とさずにサイズを縮小したいのですが
6
- しかし毎回処理プレビューを開いて行うと時間がかかってしまいますので
7
+ 毎回macpreviewを開いてこの作業を行うと時間がかかってしまいますので
7
8
  この処理をpython側で行うことはできないでしょうか?
8
9
 
9
10
  下記は取り込んだpdfをopencvでresizeしてから出力した場合です

1

opencvを用いて画像をresizeした場合のコードを書きました

2019/10/21 22:30

投稿

takatakat
takatakat

スコア5

title CHANGED
@@ -1,1 +1,1 @@
1
- pythonにおけるpdfサイズ変更につ
1
+ pythonで画質を落とさないpdfサイズ変更をした
body CHANGED
@@ -1,8 +1,23 @@
1
- pythonでpdfを出力する際の画像のサイズ(ピクセル数)を変更したい(小さくしたい)のですが
1
+ pythonでpdfを取り込んでから編集してpdfとして出力する際の画像のサイズ(ピクセル数)を変更したい(小さくしたい)のですが出力前にPILやOpencvでresizeをすると画質が落ちてしまいます。またこのときデータ容量も小さくなります。
2
- 出力前にPILやOpencvでresizeをすると画質が落ちてしまいます。
3
2
 
4
3
  しかし出力後にmacbookのpreviewの「pdfとして書き出す」のメニューから画像のサイズを変更して
5
- デフォルトのA4サイズにすると、画質を落とさずにピクセル値が変更できています。
4
+ デフォルトのA4サイズにすると、画質を落とさずにピクセル値が変更できています。またこのときデータ容量は変わっていません。
6
5
 
7
6
  しかし毎回この処理をプレビューを開いて行うと時間がかかってしまいますので
8
- この処理をpython側で行うことは可能でしょうか?
7
+ この処理をpython側で行うことはできないでしょうか?
8
+
9
+ 下記は取り込んだpdfをopencvでresizeしてから出力した場合です
10
+
11
+ ```python
12
+ from pdf2image import convert_from_path
13
+ from PIL import Image
14
+ import cv2
15
+ import numpy as np
16
+
17
+ image = convert_from_path("image.pdf")
18
+ image = np.array(image)
19
+ print(image.shape) #(2339,1654,3)
20
+ image = cv2.resize(image,(841,595))
21
+ image = Image.fromarray(image)
22
+ image.save("image.pdf")
23
+ ```