投稿キー (右画像の数字を入力) おなまえ Eメール タイトル コメント 参照先 暗証キー (英数字で8文字以内) 文字色 ■ ■ ■ ■ ■ ■ ■ ■ ■
DrawDirect等を利用していましたが、1バーコードの生成に約0.8秒程度かかっており、大量のバーコードが必要な場合、実用に耐えられない状態でした。検証の結果、インスタンスの生成に時間がかかっているものと思われ、オブジェクトを使い回せば、時間短縮可能なことがわかりました。以下手順1.バーコード生成用のbitmapを生成し、バーコードのオブジェクトを生成 var bitmap = new Bitmap(100, 50); var g = Graphics.FromImage(bitmap); var cd39 = new Pao.BarCode.Code39(g);2.バーコードを描画 cd39.DrawDirect(i.ToString(), 0, 0, 100, 35);2.生成されたイメージを実際に利用するオブジェクトにコピー pic.Image = (Image)bitmap.Clone();3.次の描画のためにバーコード生成用のbitmapを白で上書き g.FillRectangle(Brushes.White, 0, 0, bitmap.Width, bitmap.Height);2〜3の繰り返しこの手順なら実質 0.01秒未満で完了します。(400以上発行でもエラーは発生しません。)サンプル的には、毎回インスタンス生成するのが普通のようにも思われますが、もっとスマートな方法はないでしょうか。
Re: バーコード生成のスピードアップ - Koo 2013/03/21(Thu) 15:16 No.1329 すいません、項番の振りなおしを忘れていました。2.バーコードを描画3.生成されたイメージを実際に利用するオブジェクトにコピー4.次の描画のためにバーコード生成用のbitmapを白で上書き2〜4の繰り返しでした。 Re: バーコード生成のスピードアップ - Pao@Office 2013/03/21(Thu) 19:39 No.1330 お問い合わせありがとうございます。1.まず、インスタンスの生成に時間がかかる件ですが、もし、試用版をお使いであれば、ライセンスを登録した製品版をお使いになった場合、速度が向上します。試用版は、ライセンスの情報を読むのに手間取ります。製品版は、レジストリのキャッシュのみですので早くなります。2.続いて、バーコード描画手順は、サンプルは1例です。(1) インスタンス生成(2) バーコード描画1(DrawDirect - 1)(3) バーコード描画2 (DrawDirect - 2) : :(4) バーコード描画N (DrawDirect - N)と、インスタンスの生成は1回のみでバーコードの描画を繰り返していただいても問題ございません。私が理解しきれておらず、ご提案の主旨とあっていない場合申し訳ございません。お手数ですが、再度お問い合わせください。よろしくお願いいたします。 Re: バーコード生成のスピードアップ - Koo 2013/03/22(Fri) 09:36 No.1331 根本的な部分で勘違いがあるのかもしれないので質問です。1.バーコード生成で1件あたり0.8秒は異常なのか ライセンス登録済みです。 サンプルは、http://www.pao.ac/~products_download/Koo/Code39_400Test.zipを利用2.インスタンス生成後に描画先が変更できるのか インスタンス生成時にGraphicsを渡しているのみなので、 元となったイメージにしか描画されないと思っていたのですが、 描画先が変更できるのでしょうか、その方法が見つけられなかったのですが。以上、よろしくお願いいたします。 Re: バーコード生成のスピードアップ - Pao@Office 2013/03/22(Fri) 15:03 No.1332 失礼を重ねておりまして申し訳ございません。まずは、質問にお答えさせていただきます。>1.バーコード生成で1件あたり0.8秒は異常なのかもちろん、異常ということはございません。速度はマシンスペックによって変わります。弊社で計測した結果は、00:00:00.2501842 でございました。> サンプルは、http://www.pao.ac/~products_download/Koo/Code39_400Test.zipを利用こちらのサンプルを以下のように変更したものです。 private Image GetCode39(string value, int width, int height) { System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); var image = new Bitmap(width, height); var g = Graphics.FromImage(image); var cd39 = new Pao.BarCode.Code39(g); cd39.TextKintou = true; cd39.Draw(value, 10, 0, width - 20, height - 20); g.Dispose(); sw.Stop(); System.Diagnostics.Debug.WriteLine(sw.Elapsed); return image; }また、これはインスタンスの生成部分が含まれているため、描画部分(cd39.Draw)だけを計測すると、00:00:00.0102050 でございました。>2.インスタンス生成後に描画先が変更できるのか申し訳ございません。できないです。そういった運用をあまり想定しておりませんでした。どちらかというと、同じGraphics に座標を変えて描画していく運用イメージのみを持っています。バーコード描画速度だけをとれば、0.8秒かかることはまずないと思います。やはり、インスタンスの生成を毎回行うとそれなりに時間がかかってしまうのだと思います。以上、お答えになっていないようであれば、申し訳ございません。申し訳ないですが、Koo様がどのような状況なのかまだ理解できておりません。- pic.Image に直接描画してはいけないのか?- なぜ、画像コンテナが何枚も必要になるのか?など、全体像が見えていない事と、私の力不足です。理解できずに申し訳ないです。サンプルプログラムは、以前の質問時にいただいたコードをそのまま500回ループしてみたものでございます。よろしくお願いいたします。 Re: バーコード生成のスピードアップ - Koo 2013/03/22(Fri) 17:17 No.1335 お手数を取らせて申し訳ありません。同じ要領で時間計測しましたが、やはり0.8秒前後のようです。ただマシンスペック的には、i7 2600 3.4Ghz メモリー 16GBこれでそちらより遅いのは何か原因があるようにも思えます。利用目的ですが、前回の質問の続きのようになってしまいますが、相当数のバーコードを画像イメージとしてEXCELに貼り付けるのに使用しています。そのため、画像イメージを都度生成しているわけなのですが、最大1000個程度が必要なため、1000×0.8 = 800秒では使用に耐えられないため今回の質問に至った次第です。# pic.Image = (Image)bitmap.Clone(); ここはあくまでサンプルのためです。 Re: バーコード生成のスピードアップ - Pao@Office 2013/03/27(Wed) 08:23 No.1337 返事が遅れて申し訳ございません。Excel に貼り付ける画像イメージというのは、クリップボード渡しでしょうか?それとも、画像ファイルでも構いませんか?もし、画像ファイルで構わなければ、今回のバージョンアップで直接画像ファイルへ描画する機能が備わっております。Draw(DrawDirect)するたびに、ファイル名を指定して描画先を変更することが可能です。毎回、インスタンスを生成する必要はございません。こちらの機能を利用されてはいかがでしょうか?よろしくお願いいたします。
生成したバーコードのイメージをExcel上に貼り付けるために使用していますが、20程度までは問題なかったのですが、今回400個作成することとなりその時に発生しました。コード的には、Bitmapを生成し、そこにバーコードを描画したものを返す仕組みですが、やり方がまずいのかどうかを教えてください。Excelの出力部分については、バーコードなしで問題ないことを確認します。以下サンプルprivate Image GetCode39(string value, int width, int height){ var image = new Bitmap(width, height); var g = Graphics.FromImage(image); var cd39 = new Pao.BarCode.Code39(g); cd39.TextKintou = true; cd39.Draw(value, 10, 0, width - 20, height - 20); g.Dispose(); return image;}開発環境 VisualStudio 2008 SP1 C#.Net FrameWork3.5 SP1 Barcode.net 2.3.2.0
Re: DisconnectedContext が検出されました。 - Pao@Office 2013/03/08(Fri) 10:27 No.1326 お問い合わせ及び、ご報告、ありがとうございます。Barcode.net については、10万バーコード描画等、ヒートランテストを重ねているため400バーコード程度では、問題ないと思っているのですが、今回ご提示いただいた同じソースコードをコピペして検証させていただきました。結果は問題なく500バーコード描画を行うことができました。検証したVS2008のソリューション・プロジェクト・ソースを以下にアップさせていただきました。http://www.pao.ac/~products_download/Koo/Code39_400Test.zipご確認ください。理解不足、認識違い、誤り等ございましたら申し訳ございません。よろしくお願いいたします。 Re: DisconnectedContext が検出されました。 - Koo 2013/03/08(Fri) 13:45 No.1327 テストPGの作成および検証をありがとうございます。こちらの環境で試してみましたが、問題なく400以上処理可能でした。結果としては、Barcode.net単体の問題でなく、他のコンポーネントとの関連で発生しているものと思われるため、これ以上の調査は結構です。今回は現象を回避するため、設計なりを見直すことで対処となると思われます。ありがとうございました。
Barcode.net ver 2.4.0 をリリースいたしました。リリース内容概略: - バーコード精度アップ - バーコード画像ファイル保存機能追加 - コンビニバーコードの幅指定可能に - Win8 / .NET 4.5 / VS2012 対応詳細は製品サイトをご覧ください。http://www.pao.ac/barcode.net/今回のリリースは、日経BP社様 BPnet のITpro 等、複数メディアにご紹介頂きました。http://itpro.nikkeibp.co.jp/article/NEWS/20130116/449874/http://www.asahi.com/and_M/information/pressrelease/ATP201301160006.htmlhttp://news.livedoor.com/article/detail/7318189/:誠にありがとうございました。
購入を検討しているのですが、弊社の開発環境として3.5 SP1と4.0の両方があります。貴社の製品はFrameWorkのバージョンごとになっているようなのですが、この場合、製品を2つ購入する必要がある、ということでしょうか。また、その場合共存可能でしょうか。
Re: 複数Frameworkへの対応 - Pao@Office 2013/01/10(Thu) 22:08 No.1322 お問い合わせありがとうございます。1開発マシンに1ライセンス購入して頂ければ、.NET Framwework や、対象CPU の異なる Barcode.net をどれでも自由にお使い頂けます。ただし同時インストールは不可です。1つのマシン環境に基本的には共存はできません。これは、同じ場所に同じ名前でインストールされるためです。共存させたいようなご要望がある場合は、.NET Framework の下のバージョンのみインストールして上のバージョンも下位互換で動作させる方式をおすすめいたします。例:.NET 3.5 sp1 と、.NET 4.0 を共存させたい場合 .NET 3.5 sp1 をインストールし、.NET 4.0 のプログラムは下位互換で.NET 3.5版 Barcode.net を動作させる。ただし、やり方がないわけではございません。開発環境・実行環境とも、実は共存は可能です。それぞれの Pao.Barcode.dll をコピーして、それぞれのアセンブリから参照してお使い頂ければ問題ございません。実行環境の場合、参照先に対象Pao.Barcode.dllをコピーすれば、OKです。開発環境の場合、例えば、一度インストールした .NET 3.5版 Pao.Barcode.dll をどこかに退避しておいて.NET 3.5版 Barcode.net をアンインストール後.NET 4.5版 Barcode.net をインストールして、両.NET版 Pao.Barcode.dll を参照追加してお使いください。 以上、少しわかりづらくなってしまいました。すいません。わからない箇所があれば、遠慮無くご質問ください。よろしくお願いいたします。 Re: 複数Frameworkへの対応 - Koo 2013/01/11(Fri) 10:43 No.1323 ご回答ありがとうございます。購入のフォームで、FrameWorkの指定があったので1ライセンスで1FrameWorkかなと思った次第です。.Net FrameWork4.0上で、Barcode.Net 3.5版が動作することが確認できましたので、この方法で検討したいと思います。
あるツールの開発を行い、ソースコードとアプリ自体を納品予定です。御社ライブラリBarcode.netを使用したいのですが、 ・ソースコード(こちらで作成)と御社ライブラリ(dll) ・作成したアプリを納品するには、開発者ライセンス1つ(21,000円)で問題ないでしょうか。
Re: ライセンスについて - Pao@Office 2012/11/23(Fri) 22:58 No.1318 お問い合わせありがとうございます。お答えさせていただきます。開発マシンが1台であれは、基本的に問題ございません。ただし、ツールが「業務アプリケーション」のようなものであり、「開発ツール」でない必要がございます。こちらのマニュアルの33ページをご覧ください。http://www.pao.ac/barcode.net/file/Barcode.net.pdf「開発ツール」の定義の中には「バーコードを売りの一つにしたドローソフトのようなツール」も含まれます。よろしくお願いいたします。 Re: ライセンスについて - Kawa 2012/12/04(Tue) 14:00 No.1319 ご回答ありがとうございます。>「開発ツール」の定義の中には>「バーコードを売りの一つにしたドローソフトのようなツール」も含まれます。「開発ツール」の定義はどう理解すればよいでしょうか。バーコードを表示・出力するだけではなく、作成したバーコードをリソースとして新たなアウトプットを作成できるツールということでしょうか。例えば、アプリに情報を入力し、処理した結果をバーコードで表示するアプリ等は「開発ツール」に含まれないでしょうか。 Re: ライセンスについて - Pao@Office 2012/12/05(Wed) 15:27 No.1320 たびたび、お問い合わせありがとうございます。「開発ツール」の定義につきましては、「開発ツール・バーコードツール・帳票ツール・ドローソフト系での利用」とさせていただいております。これは、同じシェア内で競合製品を作成されてしまう可能性を恐れての事でございます。また、dllをラッピングして独自のライブラリなどを作成した場合でも同様です。>アプリに情報を入力し、処理した結果をバーコードで表示するアプリ等は「開発ツール」に含まれないでしょうか。物によると思いますが、通常の業務アプリケーションであれば「開発ツール」には含みません。以上、よろしくお願いいたします。
現在WPF(.NET4.0,C#,VisualStudio2010)にてソフト開発を行っております。バーコードの使用を検討することになり、本製品を検討中ですが、?@WPFから使用できますでしょうか??Aできる場合WPFアプリからのこのAPIの利用方法など具体的なコードサンプルを使って示して頂けると幸いです。
Re: WPFでの使用について - Pao@Office 2012/11/14(Wed) 14:30 No.1316 お問い合わせありがとうございます。唐突なお答えで甚だ失礼いたします。Barcode.net は、WPFには基本的に対応しておりません。これまでの.netのSystem.Drawing.Graphics(GDI+)がWPFでは利用できないためです。(参考)http://d.hatena.ne.jp/kawatan/20070916弊社では、WPFについてまだ取り組んでいないため定かな情報ではございませんが、WindowsFormsHost クラスを使って Windows Form コントロール(PictureBox等)をホストし、そのコントロール(PictureBox等)からImageを取得し、System.Drawing.Graphicsを生成することができるようです。http://social.msdn.microsoft.com/Forums/ja-JP/wpfja/thread/8212cbaf-c74a-4326-a68b-66fbcc3c0dfa/Barcode.net は、コンストラクタにSystem.Drawing.Graphicsを渡して、そこにバーコードを描画する仕組みですので、上記の手法でバーコードの描画は行えると思います。WPF <-> Windows Form 双方向で利用しあうことができることは周知のようですが、上記の手法もそのことを記述していると思われます。残念ながら、現状、このような状況で、きちんとWPFには対応できていないため後は、konさまの方で試していただけますでしょうか?その後の進捗状況によっては、追ってサポートさせていただきます。よろしくお願いいたします。
.NET 2.0版(AnyCPU)の評価版にて動作を確認させて頂いております。上記バージョンで、サンプルコード「QrApp(QRコードサンプル)」によってQRコードを作成した場合、QRコードの先頭に数字「9」が付加されますが、これは評価版の制限事項なのでしょうか?
Re: 評価版によるQRコードの制限事項について - Pao@Office 2012/09/27(Thu) 07:30 No.1314 回答が遅くなり大変申し訳ございません。QRコードの先頭に数字「9」が付加されるのは、評価版の制限でございます。よろしくお願いいたします。
購入後に送付されてきたライセンスキーを「ご購入申請・ライセンスキー登録」画面より入力、ライセンスキーが登録済みであると表示されている状態ですが、いまだバーコードよりSAMPLEという文字が消えません。どういった手順を踏めば消えるのでしょうか。インストールしたファイルはBarcode.netインストーラ (.NET 2.0 AnyCpu)で、購入したライセンスは.NET Framework2.0用です。よろしくお願いいたします。
Re: 無題 - Pao@Office 2012/02/20(Wed) 12:02 No.1307 申し訳ございません。.NET 2.0 AnyCpu版 のインストーラに限り、インストール先フォルダが違っていたために発生した不具合でございます。.NET 2.0 AnyCpu版 のインストーラを差し替えさせていただきました。ご迷惑をおかけしました。よろしくお願いいたします。
DrawDirectのようなバーコードの鮮明さを保ちつつ指定した大きさで描画する方法はありますか?よろしくお願い致します。
Re: バーコード描画について - Pao@Office 2012/01/31(Tue) 12:43 No.1298 お問い合わせありがとうございます。一応、DrawDirect() が、なるべく指定したサイズに近づけつつ、鮮明に描画する手段になっております。・Draw() → 画像を指定サイズに描画できる。 ただし縮小・拡大するため、画面やプリンタのドットのはまらなくなる部分が発生し、鮮明でなくなる。・DrawDetail() →最小描画ピッチのドット数を指定して、鮮明に描画を行うことができる。 ただし、全体は場の指定ができない。・DrawDirect() →幅指定も可能、かつ、その幅以内で一番大きなサイズでドットにはめて描画するため 鮮明であり、かつ、指定した幅に近くなる。特に、画面は解像度が低いので、 ・Draw() の場合、鮮明でなかったり ・DrawDirect() の場合、幅に相違が合ったりということがございますが、プリンタは解像度が高いため、プリントアウトすると問題がない。ということもございます。以上、よろしくお願いいたします。 Re: バーコード描画について - FU 2012/01/31(Tue) 12:46 No.1299 返信ありがとうございます。参考にします。以上、よろしくお願い致します。
チェックディジットエラー等に引っかかる値の場合でもそのままバーコードに変換することは可能ですか?もし可能ならばその方法を教えてください。以上、よろしくお願い致します。
Re: 13桁バーコードについて - Pao@Office 2012/01/30(Mon) 14:54 No.1293 お問い合わせありがとうございます。JAN13をお使いということを前提にお話を進めさせていただきます。チェックディジットが誤っているJANコードを出力することは、仕様上できません。プログラムを改変すれば可能でございます。必要であれば、FU様専用に改変し、改変版をお渡しいたします。よろしくお願いいたします。 Re: 13桁バーコードについて - FU 2012/01/30(Mon) 15:31 No.1294 返信ありがとうございます。質問の件についてですが、JAN13でなくてもかまいません。入力された値でそのままバーコードを作成できればいいです。可能でしょうか?もし可能な場合、作成したバーコードに自動的にチェックディジットが付加されてしまうのでしょうか?以上、よろしくお願い致します。 Re: 13桁バーコードについて - Pao@Office 2012/01/30(Mon) 15:48 No.1295 バーコードの種類は問わないということであれば、CODE128 でいかがでしょうか。http://www.n-barcode.com/shurui/code-128.html表現できる文字の種類は多いです。文字の種類は少なくして、バーコードを短くしたければ、例えば、CODE39はいかがでしょうか。http://www.n-barcode.com/shurui/code-39.htmlBarcode.net において、チェックデジットを気にすることなく出力できます。現在、Jan13 bacode = new Jan13(g); のようになっている部分を、Code39 barcode = new Code39(g); のようにしてただければ、お使いいただけます。よろしくお願いいたします。 Re: 13桁バーコードについて - FU 2012/01/30(Mon) 16:21 No.1296 返信ありがとうございます。上手く意図を伝えることが出来ず、2度回答させてしまい申し訳ありませんでした。回答を参考にさせていただきます。以上、よろしくお願い致します。
Page: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
- YY-BOARD -