- PR -

画像ファイルをサイズ変更してDBへ

投稿者投稿内容
たつ
常連さん
会議室デビュー日: 2005/11/21
投稿数: 39
投稿日時: 2008-01-10 18:55
スレ立て失礼します。

現在oracleのBLOB型を使用した画像ファイル管理を行っています。

DBの容量も考えて、1つのキーに対して10ファイルまで、合計1MBまでといった条件をつけています。が、ユーザーはリサイズのやり方がわからず、1つ目のファイルで1MBいってしまった場合等に問い合わせが来てしまいます。

そこで、ファイルのサイズを変更してDBに登録しようと思ったのですが、上手くいきません。。

HttpPostedFile型で取得したファイルをBitmap型に変換してサイズの変更までは出来たのですが、それをDBに登録する方法が分かりませんでした。

BLOB型で登録するにはバイナリで入れる必要があると思うのですが、Bitmap型にしてしまうと登録できないのでしょうか。

また、全く違うアプローチ等あれば御教授願います。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-01-10 19:01
C# BitmapのイメージデータをByte配列に取り出したい - Insider.NET
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=17512&forum=7
たつ
常連さん
会議室デビュー日: 2005/11/21
投稿数: 39
投稿日時: 2008-01-11 16:05
burton999さんありがとうございますm(__)m
おかげさまでDBに登録することができました。
Byte型で検索をかければよかったんですねf ^^;

で、登録はできたんですが別に根本的な問題として、画像ファイルはサイズを小さくするとバイト数が小さくなるとは限らないんですね(><)
縦と横を小さくすれば当然バイト数も小さくなると思い込んでいたのでびっくりです。。

↓等を参考にもう少し勉強します!!
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1860&forum=7

ありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-01-11 19:03
どういうフォーマットに出力していますか?
JPEG だったものをフルカラー Bitmap にしたら、多少小さくしても増えそうです。

同じフォーマットのままなら、増えることはないと思います。
たつ
常連さん
会議室デビュー日: 2005/11/21
投稿数: 39
投稿日時: 2008-01-15 15:33
jittaさんレスありがとうございます。

フォーマット??
JPEGをJPEGで出力してるから同じといえば同じなのでしょうか?

ソースは
Dim hpfFile As HttpPostedFile = Request.Files("userfile")
Dim hpfFileBitmap As Bitmap = New Bitmap(hpfFile.InputStream)
Dim hpfFileReSize As Bitmap = New Bitmap(hpfFileBitmap, 800, 600)
hpfFileReSize.Save("D:\hpfFileReSize.jpg") 'テスト出力

Dim ms As System.IO.MemoryStream = New System.IO.MemoryStream
hpfFileReSize.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim image() As Byte = ms.ToArray
DBに登録


って処理を行っているのですが、元のファイルは70KBなのに、「D:\hpfFileReSize.jpg」のファイルは953KBになりました。。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-01-15 16:18
拡張子が jpg という名の bmp のような気がしてなりません。 953KB は画像のサイズがいくつの場合のお話でしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
なぎさ。
会議室デビュー日: 2007/12/21
投稿数: 9
お住まい・勤務地: カンサイ
投稿日時: 2008-01-15 16:22
画像をファイルに保存するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/020savebmp/savebmp.html


フォーマット指定しないと拡張子がjpgでも中身はPNGのようです。
オーバーロードメソッドを利用してみてください。

hpfFileReSize.Save("D:\hpfFileReSize.jpg", ImageFormat.Jpeg)
たつ
常連さん
会議室デビュー日: 2005/11/21
投稿数: 39
投稿日時: 2008-01-15 18:02
じゃんぬねっとさん、なぎささん返答ありがとうございます☆

>じゃんぬねっとさん
書き込み忘れてましたm(__)m
800*600の画像を800*600に変換すると70KBが953KBになりました。

>なぎささん
なるほど!おかげさまで解決しました!!
800*600の画像を400*300にしてみると70KBが15KBになりました☆
ありがとうございます(^^)

スキルアップ/キャリアアップ(JOB@IT)