- - PR -
画像ファイルをサイズ変更してDBへ
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-01-10 18:55
スレ立て失礼します。
現在oracleのBLOB型を使用した画像ファイル管理を行っています。 DBの容量も考えて、1つのキーに対して10ファイルまで、合計1MBまでといった条件をつけています。が、ユーザーはリサイズのやり方がわからず、1つ目のファイルで1MBいってしまった場合等に問い合わせが来てしまいます。 そこで、ファイルのサイズを変更してDBに登録しようと思ったのですが、上手くいきません。。 HttpPostedFile型で取得したファイルをBitmap型に変換してサイズの変更までは出来たのですが、それをDBに登録する方法が分かりませんでした。 BLOB型で登録するにはバイナリで入れる必要があると思うのですが、Bitmap型にしてしまうと登録できないのでしょうか。 また、全く違うアプローチ等あれば御教授願います。 |
|
投稿日時: 2008-01-10 19:01
C# BitmapのイメージデータをByte配列に取り出したい - Insider.NET
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=17512&forum=7 |
|
投稿日時: 2008-01-11 16:05
burton999さんありがとうございますm(__)m
おかげさまでDBに登録することができました。 Byte型で検索をかければよかったんですねf ^^; で、登録はできたんですが別に根本的な問題として、画像ファイルはサイズを小さくするとバイト数が小さくなるとは限らないんですね(><) 縦と横を小さくすれば当然バイト数も小さくなると思い込んでいたのでびっくりです。。 ↓等を参考にもう少し勉強します!! http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1860&forum=7 ありがとうございました。 |
|
投稿日時: 2008-01-11 19:03
どういうフォーマットに出力していますか?
JPEG だったものをフルカラー Bitmap にしたら、多少小さくしても増えそうです。 同じフォーマットのままなら、増えることはないと思います。 |
|
投稿日時: 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になりました。。 |
|
投稿日時: 2008-01-15 16:18
拡張子が jpg という名の bmp のような気がしてなりません。 953KB は画像のサイズがいくつの場合のお話でしょうか?
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
|
投稿日時: 2008-01-15 16:22
画像をファイルに保存するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/020savebmp/savebmp.html フォーマット指定しないと拡張子がjpgでも中身はPNGのようです。 オーバーロードメソッドを利用してみてください。 hpfFileReSize.Save("D:\hpfFileReSize.jpg", ImageFormat.Jpeg) |
|
投稿日時: 2008-01-15 18:02
じゃんぬねっとさん、なぎささん返答ありがとうございます☆
>じゃんぬねっとさん 書き込み忘れてましたm(__)m 800*600の画像を800*600に変換すると70KBが953KBになりました。 >なぎささん なるほど!おかげさまで解決しました!! 800*600の画像を400*300にしてみると70KBが15KBになりました☆ ありがとうございます(^^) |