• ベストアンサー

QRCodeHelperが動かない

VisualStudio2010 vbで作ったMVCに QRCodeHelperを追加してQRコードを表示しようとしました。 参考にしたのは http://blogs.msdn.com/b/chack/archive/2011/02/28/asp-net-mvc-3-webmatrix-razor-helper-nuget.aspx です。 でもデバック実行すると QRCodeImage.cshtmlのimage.Save(Response.OutputStream, ImageFormat.Png);で GDI+ で汎用エラーが発生しました。 となります。 どこを直せばよいのでしょうか。

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

  • ベストアンサー
  • aspnet
  • ベストアンサー率79% (72/91)
回答No.1

QRCodeHelperって、NuGetで落としてきたフリーのヘルパですよね。 それは随分と使い勝手の悪そうなエラーメッセージですね。 QRコード生成はヘルパを使わずに、普通にDLLを使ってもできるのですが、グラフィックライブラリとの関係で、依存モジュールの過不足など例外が出ます。 ヘルパ経由のインストだと分りづらいのですが、QRCodeHelper本体の.dllがあるはずなので、DLL依存性チェッカ(Dependency Walkerなど)を使ってDLLの中身をチェックし、不足モジュールDLLをOSに加えるしかありません。 これが特殊なDLLだった場合、一般のWebサーバ等には入れようがないため、そのモジュールは使えないということです。

参考URL:
http://www.dependencywalker.com/
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • FileUploadを利用しての画像保存(再)

    ASP.NET、フレームワークは.net4.0環境です。 言語はc sharpです。 FileUploadコンロールを使って、POSTした画像を保存するような ものを作りたいと考えています。 想定は4MB以内のファイルなのですが、4MB以内でも、色数が多いと うまくいかないようで悩んでいます。 以下のようなコードを書きました。 -- HttpPostedFile imageData = FileUpload1.PostedFile; //投稿ファイル byte[] buffer = new byte[imageData.InputStream.Length]; imageData.InputStream.Read(buffer, 0, Convert.ToInt32(imageData.InputStream.Length)); ImageConverter ImgConv = new ImageConverter(); Bitmap bitmapSave = (System.Drawing.Bitmap)ImgConv.ConvertFrom(buffer); bitmapSave.Save(temp_path, ImageFormat.Jpeg); //temp_pathには保存先のパスが入っています。 -- bitmapSave.Saveで、以下のようなエラーが出てしまいます。 -- ExternalExceptionがキャッチされました。 GDI+ で汎用エラーが発生しました。 -- 再現性がイマイチで、色数が少なければうまくいくようです。 ただ、たとえば以下のような色数の多い広告画像だとエラーに なってしまいます。 http://www.tsukumo.co.jp/shop/tirashi/akiba_02.html 画像のwidth、heightを見たいのと、pngやgifであってもjpegに 変換したいので、bitmap.Saveを使う形式でうまく保存できるように 直したいのですが、ご教授いただけないでしょうか。

  • 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です。

このQ&Aのポイント
  • 最終頁でのプリントアウトができず、お困りの方へのトラブル相談。
  • Androidでの使用環境で、無線LAN接続に問題あり。
  • 関連するソフト・アプリは特になし。電話回線はケーブルテレビ経由。
回答を見る