LoginSignup
3
11

More than 5 years have passed since last update.

Accessの画像データの扱い方

Posted at

AccessはDB内に画像を保存することができるので、画像ファイルが散らばらないメリットがあり、間違って画像ファイルを消した、入れ替えてしまったというようなエラーが発生しにくいと考えています。
Accessで画像を扱うための基本と、ファイルの大きさ(=DBとしての動作の軽さ?)について、保存方法の種類ごとにまとめます。

画像ファイルはOLEオブジェクトフィールド

Accessの画像ファイルを保存するフィールドは、OLEオブジェクト形式のフィールドにします。
OLEオブジェクトは写真などの静止画だけではなく、動画やWord、Excelファイルなども登録できます。そう考えると、ドキュメント管理にも使えるのかもしれません。(差分とかはできません)
OLEオブジェクト形式のテーブルのフィールド設定はこんな感じです。
image.png
データ型をOLEオブジェクトにすればいいのです。
フォームもそのまま作成し、大きさを調整すればいいのではないでしょうか。
image.png

Accessデータへの画像の新規登録

これはAccessのイマイチなところなのですが、OLEオブジェクトをデータに登録するには、ちょっと(かなり)面倒です。
テーブル、またはフォームのOLEオブジェクトを右クリックし、オブジェクトの挿入します。
image.png
ファイルからにして参照
image.png
これでやっとファイルが指定できます。
image.png
選んでOKします。
image.png
そこでもう一回OKします。
image.png
これで入ります。
image.png
実にクリック回数、7回+ファイル選択の手間がかかります。
PNGだとプレビューしないのかな。
JPGとBMPはちゃんと表示されます。

登録の仕方による違い

ということで、画像の登録が面倒なので、いろいろな登録を試してみたいと思います。
その前に、現時点のファイル容量をプロパティで確認します。

ファイルを指定したときのファイル容量

image.png
438,272バイト
ここでこのレコードを削除して、データベースを最適化します。

ファイルアイコンをフォームにドラッグ

エクスプローラーからフォームにドラッグ。
image.png
ちゃんと登録されました。
これは簡単ですね。
image.png
438,272バイト(全く同じ)
エクスプローラーのファイルアイコンをコピーして、フォームに貼り付けする方法でも、同じくできて、ファイルサイズも変わりません。

ペイントからコピペ

ペイントで実画像を開き、すべて選択してコピー、フォームに貼り付けする方法。
image.png
ちゃんとデータとして格納しました。
表示もされてますね。
image.png
ダブルクリックするとペイントで開けます。
image.png
容量も小さくなって、387,312バイト。
image.png
うーん、事前実験ではこちらのほうがデータ大きくなったのですが。。。
もしかしたらグラフとかじゃなくて写真だったら違うかも。
ちょっと比較してみます。
比較に使うデータはこれ。
image.png
結果
image.png
冗談みたいなのですが、どの方法でも変わりませんでした。

考察

予想は、Accessはファイルで登録すればファイルの容量がデータ量、画像そのものをフォームにコピペしたらビットマップそのままになると思っていました。
しかし、この結果から考えると、内部でなんらかの圧縮をしているようですね。
写真の方は1200pix×900pixなので少なくともビットマップではデータがもっと大きくなるはずです。
事前実験では、コピペしたら大きさが極端に大きくなったのですが、もしかするとパソコン&ディスプレイに影響しているのかもしれません。
スクリーンショットをするとディスプレイによっては2倍の高さと幅になるからその違いかと。
この記事を執筆しているパソコンは、オフィスソフトだけ使うパソコンなので普通のディスプレイでスクリーンショットは100%なのですね。

まとめ

Accessのフォームに画像を登録することができる!
Accessのフォームに画像を登録する時はいろいろな登録方法があるけど、ファイルアイコンをドラッグしてもいいし、画像をそのままデスクトップ上でスクショしてフォームに貼り付けられる!
スクショするときはいいディスプレイを使うと大きな画像で登録される(ようだ)

3
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
11