知見のある皆様へ

昨日も投稿しましたが、誤解を与える質問かなと思いましたので再度投稿させて頂きます。

さて 現在 某顧客から申込受付システムの提案依頼・相談されております。  
（業務ノウハウが弊社にあり、その点を評価されての提案依頼です）

顧客からは  
・サービス申込には本人確認書（免許書・マイカード等）が必要になる。  
よって 本人確認証明書を写した画像ファイルを申込受付サイトから  
アップロードさせたい。  
・本人確認書は多くの場合スマホで撮影される事を想定しているが、  
昨今 スマホのカメラ機能がアップし画像ファイルの容量が大きく  
なる傾向がある。  
一方 システムを稼動させるサーバのＨＤＤの容量を有効的に  
つかいたい。  
その為アップロードされた画像ファイルを圧縮してＨＤＤ保存しておきたい。  
（圧縮ツール使い前日申込分を手動で圧縮させる等は嫌な模様です）

上記要望が出ております。  
※個人的には画像ファイルを圧縮しても、劇的にファイル容量が小さくなる事はないと  
思いますが。。。

要望を満たす為に、  
1.申込WEB画面でファイルアップロード時に自動圧縮 サーバサイドの送信。  
（申込WEB画面をHTML+Javascript Or HTML+PHP 等の組み合わせで開発？）

2.送付されてきた画像ファイルをサーバサイドで圧縮  
（Javaを使って画像ファイルを圧縮するPGを作成。  
作成したPGをタイムスケジュールとかに登録して自動稼動）

上記二通りが思いつきます。

1は実現は難しいのかなと推測しております。  
2に関しては、ネットで圧縮PGとしてImageIOを使った参考例として下記を見つけました。

```

    public static byte[] resize(final byte[] src, final double scale) throws IOException
    {
        try (ByteArrayInputStream is = new ByteArrayInputStream(src);
            ByteArrayOutputStream os = new ByteArrayOutputStream()) {
                BufferedImage srcImage = ImageIO.read(is);
                BufferedImage destImage = resizeImage(srcImage, scale);
    
                // 保存品質は「75」になる
                ImageIO.write(destImage, "jpeg", os);
                return os.toByteArray();
            }
    }
    
```

保存品質を指定できない方法との事でしたが、本人確認書の為ですから、  
それほど問題にはならないと考えております。

【ご質問】  
前書きが長くなりましたが、  
・1について良い方法があればご教授下さい。  
・2について良いPGがあればご教授下さい。  
・1・2以外の方法があればご教授下さい。

以上宜しくお願いします。
CC BY-SA 3.0
2018-04-03T04:36:24.603
42884
2018-04-03T07:05:44.960
2018-04-03T07:05:44.960
3060
27978
question
javascript php java
アップロードした写真を自動的に圧縮出来る方法があればご教授下さい。
フロントサイドの画像加工について  
大きな流れとしてはJavascriptをCanvasで書き出してサイズ加工した上でbase64に書き出してblobとしてPOSTする流れでイケルと思います。

ブラウザでローカル画像をリサイズしてアップロードhttps://qiita.com/komakomako/items/8efd4184f6d7cf1363f2  
詳細なプログラムはこちらを参考にしてください。

ただし、Canvasはブラウザ制約があるので一度ご確認ください。  
<https://developer.mozilla.org/ja/docs/Web/HTML/Canvas>

Javaを利用したサーバサイドでの加工  
こちらは私はちょっとわかりません。

それ以外の方法として  
サーバサイドで実行するのであればimagemagicを利用することで可能です。  
<http://imagemagick.rulez.jp/>  
サーバにimagemagicをインストールしてコマンドラインで実行することになります。  
ほとんどのサーバでインストールして使えると思います。

PHPはフロントサイドではなくてサーバサイドの言語になります。  
PHPであれば拡張ライブラリが存在するので  
<http://php.net/manual/ja/book.imagick.php>  
こちらを利用してもいいと思います。
CC BY-SA 3.0
2018-04-03T05:00:16.367
42887
2018-04-03T05:00:16.367
22665
42884
answer