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

C#で画像データを読み込んでpng形式...
 
通知
すべてクリア

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


なおぞう
 なおぞう
(@なおぞう)
ゲスト
結合: 9年前
投稿: 143
Topic starter  

お世話になります。
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)
ゲスト
結合: 22年前
投稿: 320
 

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


返信引用
なおぞう
 なおぞう
(@なおぞう)
ゲスト
結合: 9年前
投稿: 143
Topic starter  

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


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

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


返信引用
匿名
 匿名
(@匿名)
ゲスト
結合: 1秒前
投稿: 0
 

>aetos さま

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました