PNG ファイルの最適化 (減色 / 圧縮) を行うオンラインツール 「TinyPNG」 が JPEG ファイルの最適化にも対応しました。
これにあわせて、「TinyJPG」 も立ち上がりましたが、TinyPNG も TinyJPG も、どちらも PNG / JPEG ファイルの最適化を同時に行えるようになっていますので、サイト名が異なるだけで機能的には同じです。
上が元々ある TinyPNG で、下が TinyJPG のスクリーンショット。
使い方は同じで、パンダさんの横の ドラッグ & ドロップ エリアに、最適化したい画像をドラッグ & ドロップすればいいだけ (もしくはこの部分をクリックしてファイルを選択)。同時に 20 ファイルまで最適化できます。
今までの TinyPNG は PNG ファイル専用で、JPEG ファイルをアップロードすると当然ながらエラーになりましたが、今は JPEG ファイルにも対応したため、両方の形式の画像ファイルを同時に最適化できます。
開発者向け API も JPEG ファイルに対応
TinyPNG は開発者向け API を提供しており、この API を Grunt から利用する 「grunt-tinypng」 を以前この Blog でも紹介しています。
この開発者向け API も JPEG ファイルに対応したため、grunt-tinypng も PNG / JPEG ファイルの最適化を同時に行えるようになりました。
詳しくは上記リンク先の記事で書いていますので、ここでは細かい説明は省きますが、基本的なタスクの書き方としては下記のような感じで、PNG / JPEG ファイルを対象にしてあげればまとめて最適化できます。ちなみに、API キーは別途取得が必要です。
module.exports = function(grunt) { grunt.initConfig({ paths: { img: 'img/', imgdist: 'dist/img/' }, tinypng: { options: { apiKey: "[API Key]" }, files: { expand: true, cwd: '<%= paths.img %>', src: '**/*.{jpg,png}', dest: '<%= paths.imgdist %>' } } }); grunt.loadNpmTasks('grunt-tinypng'); };
PNG / JPEG 形式以外の画像ファイルに関しては、grunt-contrib-imagemin などと併用すればいいでしょう。その場合の Gruntfile.js は下記のような感じでしょうか。
module.exports = function(grunt) { grunt.initConfig({ paths: { img: 'img/', imgdist: 'dist/img/' }, tinypng: { options: { apiKey: "[API Key]" }, files: { expand: true, cwd: '<%= paths.img %>', src: '**/*.{jpg,png}', dest: '<%= paths.imgdist %>' } }, imagemin: { dynamic: { files: [{ expand: true, cwd: '<%= paths.img %>', src: '**/*.gif', dest: '<%= paths.imgdist %>' }] } } }); grunt.loadNpmTasks('grunt-contrib-imagemin'); grunt.loadNpmTasks('grunt-tinypng'); };
ということで、JPEG ファイルにも対応した TinyPNG (TinyJPG) のおかげでより一層、画像の最適化が捗りそうです。