C#で画像データを読み込んでpng形式のbyte配列にしたい – プログラミング – Home

C#で画像データを読み込んでpng形式...
 

[解決済] C#で画像データを読み込んでpng形式のbyte配列にしたい  

  RSS

なおぞう
 なおぞう
(@なおぞう)
ゲスト
参加済み: 4年 前
投稿: 143
2016年7月22日 3:54 PM  

お世話になります。
C# VS2010で開発しております。

やりたいことは、ファイル選択ダイアログで選んだ画像データ(jpg,bmp,pngなど)をpng
形式のbyte配列にして、DBに格納、利用(印刷)する。です。

image1.Save(@C:\test.png, System.Drawing.Imaging.ImageFormat.Png); というよう
に、ファイルをセーブする際にファイル形式を変える方法は見つけたのですが、データ上
でpngにする方法が分かりません。
 
現状では、以下のようなテストコードを作成しています。
----------------------------------------------------------
string fname =openFileDialog1.FileName ←jpgファイルを指定

//画像を読み込む
FileStream stream = new FileStream( fname, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(stream);
↑この書き方だと、jpg形式のバイナリですよね。ここで、読み込んだjpgデータをpng形式
にする方法を調べているのですが見つからなくて困っています。       

//バイト配列にする
byte[] photo = null ;   ←この変な書き方はわざとです
photo = new byte[] { };  ←この変な書き方はわざとです
photo = reader.ReadBytes((int)stream.Length);

reader.Close();//クローズ
stream.Close();//クローズ

ImageConverter imgconv = new ImageConverter();
Image img = (Image)imgconv.ConvertFrom(photo);//バイト配列をイメージに変更する

//描画先とするImageオブジェクトを作成する
Bitmap canvas = new Bitmap(pictureBox2.Width, pictureBox2.Height);
//ImageオブジェクトのGraphicsオブジェクトを作成する
Graphics g = Graphics.FromImage(canvas);

//画像をcanvasの座標(0, 0)の位置に描画する
g.DrawImage(img, 0, 0, pictureBox2.Width, pictureBox2.Height);
//Imageオブジェクトのリソースを解放する
img.Dispose();

//Graphicsオブジェクトのリソースを解放する
g.Dispose();
//画像の変換ができてるか確認。pictureBox2に表示してみる
pictureBox2.Image = canvas;

----------------------------------------

以上、よろしくお願いします。


引用未解決
トピックのタグ
C#
YuO
 YuO
(@YuO)
ゲスト
参加済み: 17年 前
投稿: 320
2016年7月24日 3:09 AM  

Bitmap.SaveでMemoryStreamに書き出して,
DBへはMemoryStream.ToArray()を出力すればよいのではないでしょうか。


返信引用
なおぞう
 なおぞう
(@なおぞう)
ゲスト
参加済み: 4年 前
投稿: 143
2016年7月25日 9:52 PM  

>YuO様
ご返答ありがとうございます。
画像データの扱いを後回しにしてちょっと簡単なところから手を付け始めています。
アドバイス、参考にさせていただきます。


返信引用
aetos
(@aetos)
Noble Member
参加済み: 4か月 前
投稿: 1480
2016年8月2日 11:47 AM  

BinaryReader も ImageConverter も要らなそうですね。
パスを指定して Bitmap に読み込んで、Bitmap.Save で MemoryStream に書き出しでいい
と思います。


返信引用
非メンバーを含む全員
 非メンバーを含む全員
(@非メンバーを含む全員)
ゲスト
参加済み: 1秒 前
投稿: 0
2016年8月2日 8:00 PM  

>aetos さま

書き込みありがとうございます。
結局、同僚が作ってくれました…。
ソースを見たのですがなんだか複雑でよく分からなかったです。

また何かありましたらよろしくお願い致します。


返信引用

返信する


Preview 0 Revisions Saved
Share:

ログイン または 登録 してください

タイトルとURLをコピーしました