C#でのpngからbmpへの変換について

このQ&Aのポイント
  • C#でのpngからbmpへの変換について困っています。フォトショで開けるbmpファイルを作成する方法を教えてください。
  • プログラミング初心者の質問です。C#でpngファイルをbmpに変換するプログラムを作成中ですが、変換後のファイルがフォトショで読み込めません。原因と解決方法を教えてください。
  • C#でpngファイルをbmpに変換していますが、フォトショで読み込めるbmpファイルを作成する方法が分かりません。アドビのフォトショで正しく開けるbmpファイルを作成するためにはどうすればいいですか?
回答を見る
  • ベストアンサー

C#でのpngからbmpへの変換について

プログラミングの初心者です。 現在、以下の点について困っています。 現在業務で画像ファイルをpngからbmpに変換するプログラムを作成しています。 以下のようなソースで対象のファイルを変換してみたのですが、変換後の画像ファイルをアドビのフォトショで開こうとすると読み込みに失敗します。 ※usingでDrawing.Imagingは宣言済み Bitmap bmp = new Bitmap("failename.png"); bmp.Save("failname.bmp", ImageFormat.Bmp); bmp.Dispose(); 念のため、ペイントで適当な画像を作成して同様の処理をしてみたところ、そちらは上手く変換できたようで、フォトショでも普通に開けることが出来ました。 対象の画像ファイルは、変換前ではちゃんとフォトショで開けることが出来ます。 フォトショでもちゃんと読み込めるファイルを作成するには、まだソースが足りないのでしょうか? 知っている方がおられましたら、アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 こんにちは。  手元にフォトショップが無いのですが、アルファチャンネル絡みの様な気がします。  セーブするビットマップフォーマットを明確に指定してみては如何でしょうか。 private void Form1_Load(object sender, EventArgs e) { Bitmap src = new Bitmap("test.png"); Bitmap dst = new Bitmap(src.Width, src.Height, PixelFormat.Format24bppRgb);//RGB24bitにする Graphics gfx = Graphics.FromImage(dst); gfx.DrawImage(src, 0, 0); dst.Save("test.bmp", ImageFormat.Bmp); gfx.Dispose(); src.Dispose(); dst.Dispose(); }

garnet20
質問者

お礼

こんにちは。 machongolaさんが提示してくださったソースを反映したところ、今度はちゃんと変換処理がなされました。 変換画像が外部から取得する画像なので詳しい仕様はわからない(terapadでどの変換コードでも文字化けてしまう)のですが、どうやら指摘通りであったようです。 回答ありがとうございました。

関連するQ&A

  • bmp→png→bmpで画質は落ちますか?

    本をスキャナーでとりこんで(モノクロ)画像ファイルとして管理しています。 bmpで保存しているのですが、ご存知のように容量が膨大になってしまいます。 pngに変換すると10分の1くらいになりますので、全部pngに変換しようと思っています。 pngは可逆変換なので、bmp→png→bmpで画質は落ちないと解釈してよろしいのでしょうか。 pngに変換した画像を印刷して変換前のbmpと比較したところ目に見える違いは認められませんでした。 よろしくお願いします。

  • デスクトップイメージを高画質でファイル化したい

    (1) デスクトップのフルスクリーンイメージを「Print Screen」でクリップボードに取り込んで、 System.Drawing.Image として宣言した変数に My.Computer.Clipboard.GetImage() で格納し、 System.Drawing.Imaging.ImageFormat.Png System.Drawing.Imaging.ImageFormat.Jpeg System.Drawing.Imaging.ImageFormat.Bmp でファイル化しました。 (2) 同じデスクトップのフルスクリーンイメージを ペイント、ワード(解像度デフォルト)、GIMPに取り込んでファイル化したデータと比較したところ、 PNGファイル以外は程度の差はあるが、何れも(1)の方が画質が悪かったです。 質問ですが、 VBでデスクトップイメージを高画質でファイル化できないでしょうか?

  • BMP→PNG

    BMP→PNG BMP形式の画像をトリミングしてBMP形式で上書きした後、 PNG形式で保存したらPNG形式のほうがファイルサイズが大きくなってしまいました。 これはどうしてなのでしょうか?

  • 破損した画像(BMP?PNG?)なのでしょうか?

    比較的大量のBMP画像をPNGに加工するために 自動的に軽い形に変換してくれるAzConvPNGで まとめて加工していたのですが、 自分のHPにアップロードしてみたところ一部のPNG画像は (一瞬下方からノイズがかかって)表示する事ができませんでした。 通常のプレビューでは見る事ができるのに… そこで、ペイントの編集機能からPNG⇒PNGに変換すると データは重くなりましたが表示されるように。 変換にミスでもあったのかと、このデータを再びBMPに変換して またAzConvPNGで軽いPNGに変換。 (ファイルサイズは前の失敗したものと全く同じに) アップロードしてみるとやはり同じエラーで表示されません… 元のBMP画像は壊れていたのでしょうか? それともAzConvPNGの変換に何か問題があるのでしょうか。 これはゲーム内のCGだったのですが、抽出したものと KIOKUでプリントしたBMPをAzConvPNGで変換した時 それぞれ全く同じサイズのPNGが出来上がったので BMPは全て見た目通りの情報だと思っているのですが…

  • pngがbmpになってしまう。

    winXP IE6.0を使ってます。 数日前から 素材さんなどのHP上で画像を右クリックをし 「名前をつけて画像を保存」をすると pngだけbmpに変わってしまいます。 ファイルの種類もbmpしかありません。 直す方法はあるでしょうか?

  • C#の保存フォーマット指定

    C♯のプログラムで 保存、読み込みにおいてbmp以外にjpgとgifを指定しないといけないのですが、 >saveFileDialog1.Filter =のあとの“イメージ(*.bmp)…には追加したのですが、 >そのあとの System.Drawing.Imaging.ImageFormat.Bmp: の部分を変えないといけないのですが、そこが分からなくて詰まっています! 誰か教えてください! お願いします

  • C#(Windows Form)で作る電子印鑑

    C#で電子印鑑を作っています。 前提として、私はプログラマーではありません。過去に大学の講義でCを受けており、コードの理解はできます。趣味程度でVisualStudio 2022とAIチャットを駆使して作っています。Framework 4.8.1 ChatGPTで限界を感じたので、ここで質問させていただきます。 ※ひたすらChatGPTで質問した後なので、補足がくどい場合があります。ご承知おきください。 ※質問内のコードが有効な方法かは知りません。普通はやらないコードも使ってるかもしれません。藁にも縋る思いです。すでにpng・メタファイル・ChatGPT・Geminiと格闘し続けて3週間以上です 一通りコードを書き終え、白背景で印影をAdobe ReaderのPDF(以下、単純に「PDF」と書きます)にCtrl+Vで貼り付けるところまで実装できました。BMP形式なので割とすんなりでした。もともとある画像を読み込んでいるのではなく、描画はすべてDrawLineやDrawEllipseで実施しています。 この白背景は、ラジオボタンで背景透過画像と切り替えできるようにしています。背景透過画像が肝心です。 今、実装できていないのが、この背景透過画像をPDFにCtrl+Vで貼り付ける動作です。 PDFに背景透過画像を貼り付けるコードにできますでしょうか?拡張メタファイル形式でコピーできれば貼り付けられると思うのですが… 下にも書きますが、Office系には背景透過画像の貼り付けが成功しています。 今のコードが以下です。if文内なので、usingでくくってます。ボタンクリックでクリップボードコピーです。 名前空間 using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Drawing.Text; using System.Globalization; using System.IO; using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Windows.Forms; using System.Runtime.InteropServices; if文分岐内 using (Bitmap bmp = new Bitmap(diameter, diameter, PixelFormat.Format32bppArgb)){ using(Graphics g = Graphics.FromImage(bmp)) { g.Clear(Color.Transparent); DrawGraphics(g, h, x, y); (DrawGraphicsメソッドですべての描画を実施) } bmp.Save(ms, ImageFormat.Png); System.Windows.Forms.IDataObject dataObject = new DataObject(); dataObject.SetData("png", true, ms); Clipboard.SetDataObject(dataObject, true); bmp.Dispose(); ms.Dispose(); } } 透過画像なので、ImageFormatsやSetDataは"png"で指定しています。このまま実行すると、Office系のソフトには正常に透過画像が貼り付けられますが、貼り付け先がPDFだと貼り付けができません。ただし、Office系に貼り付けたあとの背景透過画像をそのままCtrl+Cでコピーし、PDFにCtrl+Vするとなぜか正常に貼り付けられます。Office系でコピーした時点で拡張メタファイルか何かに変換されているのでしょう… そもそも最初のbmpの時点で透過情報消えるやないか、と思っていましたが、Bitmapクラスは透過情報が保持できる?ようです。 そのため、C#のコード内でOffice系に貼り付け後のコピーの動作(おそらくpng→emf変換)を実装しようとしたのですが、 ImageFormats.Emf/SetData("emf")や、 ChatGPTにて ①png→メタファイル ②png→バイト列→メタファイル ③png→bmp→メタファイル(bmpの時点で透過情報が死ぬので不採用ですが、ChatGPTから提案され続けました。) など、すべて不発に終わりました。 ImageFormats.Emf/SetData("emf")、これに関しては、 コード内のbmp.Save(ms, ImageFormat.Emf);これの時点で、すでに変換に失敗しているようです。wmfにしてもダメでした(デバッグ開始でボタンを押すとnullが返ってくる) ラスター画像なので描画自体は少し汚いですが、WPFだと拡張メタファイルやクリップボードをうまく扱えませんでした… コピーの様子をみるためにWPFは途中まで書きましたが、メタファイルの扱いがうまくいきませんでした。私の知識がないだけかもしれませんが、有力な情報もヒットしません… その他情報必要な場合は追加しますので、よろしくお願いいたします。 アプリケーションの使用先OSはWin10/11です。

  • キャプチャ画像をPNGに変換

    PCのキャプチャ画像をPNGに変換できるソフトを探しています。 BMPやJPGより八分の一以下の容量にでき、トリミング可能なものです。 ご存知でしたら教えて下さい。

  • VB.netでのPictuerBoxに描写した内容の保存について。

    VB.netでのPictuerBoxに描写した内容の保存について。 PictureBoxに描写した内容を保存してみると、描写した項目事態は正しく保存されているのですが、背景が真っ黒になってしまいますこれは、なぜなのでしょうか? ソースは以下の様な感じです。 Dim bmp As Bitmap Dim g As Graphics bmp = New Bitmap(PictureBox1.Width, PictureBox1.Height) PictureBox1.Image = bmp g = Graphics.FromImage(PictureBox1.Image) g.DrawLine(Pens.AliceBlue, 0, 10, 20, 10) PictureBox1.Refresh() PictureBox1.Image.Save("test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg) どなたかわかる方よろしくお願いいたします。

  • aiファイルをbmp,jpg,pngに変換するソフト

    aiファイルがたくさんあるのですが、そのaiファイルをbmp,jpg,pngなどの形式に変換するソフトを探しています。 できれば、たくさんのファイルがあるので一度に変換でき、フリーソフトがいいのですが…。もしご存知でしたら教えてください。宜しくお願いします。

専門家に質問してみよう