C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■6858  C#.netからExcel経由での印刷ができない
□投稿者/ UFO -(2006/09/26(Tue) 17:21:58)

    分類:[C#] 


    分類:[C#] 

    OS:WindowsServer2003 言語:C#.net2005

    サーバで開発してます。
    ローカルでVWD2005でデッバグすると、問題なく、うまく印刷できてからプロセスの中のEXCEL.EXEは消えます。
    IISを使って、IPでアクセス(リモート)してみたら、印刷前のことは大丈夫ですが、@印刷ができなくなってしまいます(プリンタプールにまったく入らない)。Aプリント部分をソースを消してやっても、サーバのプロセスの中の全てのEXCEL.EXEは消えません。

    なので、ソースの問題ではなく設定の問題じゃないかなぁと考えてます。
    何か設定などが必要なのか、どなたかお知恵を拝借できるとありがたいです。

    **************************  ポイント  *************************************************************

    EXCELファイルを新規して保存できるため、
    IISを設定する時に、ASP.NETバージョン2.0.50727 に設定してます。ASPの構成の設定の中で、アプリケーション→IDの設定に「ローカル偽装」と設定しております。

    プリンタのほうに、すべてのユーザにすべての権限を渡してますのに。

    以上宜しくお願いします。

    **************************  ソース  ************************************************************

    Excel.Application objApp;
    Excel._Workbook objBook;

    Excel.Workbooks objBooks;
    Excel.Sheets objSheets;
    Excel._Worksheet objSheet;
    Excel.Range range;

    try
    {
    // Instantiate Excel and start a new workbook.
    objApp = new Excel.Application();
    objBooks = objApp.Workbooks;

    objBook = objBooks.Open(FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    objSheets = objBook.Worksheets;
    objSheet = (Excel._Worksheet)objSheets.get_Item(1);

    ................
    ................
    ................

    //Return control of Excel to the user.
    objApp.Visible = true;
    objApp.UserControl = false;

    objBook.Save();

    //ExcelファイルをDocuWorksファイルにPrintOut
    objBook.PrintOut(Type.Missing, Type.Missing, 1, false, "Canon LASER SHOT LBP-1810", Type.Missing, Type.Missing, Type.Missing);

    System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheet);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheets);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(objBook);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(objBooks);
    objApp.Quit();
    System.Runtime.InteropServices.Marshal.ReleaseComObject(objApp);
    }
    Catch(Exception theException)
    {
    ............
    }
親記事 /0過去ログ6より / 関連記事表示
削除チェック/

■42978  Re[17]: Excelインポートしてテーブルへの追加
□投稿者/ もりお -(2009/10/26(Mon) 02:21:58)
    No42942 (nao さん) に返信
    > ss = "SELECT * INTO test_naoa FROM OPENROWSET("'" & appfile "'", [Sheet1$])"
    > と、しているのですが、Sheet1でもエラーメッセージ、appfileでもエラーとなってしまいます。
    
    どのようなエラーなのでしょうか。
    
    
    excel の DataTable を元に SQL Server への Insert クエリーを発行するという手もあります。
    
    Public Sub insertFromExcel(ByVal excelTable As DataTable)
        Using connection As New SqlConnection(connectionString)
            Using insertCommand = New SqlCommand( _
                "INSERT INTO [namer] ( name ) VALUES( @name )", connection)
    
                Dim nameParameter As SqlParameter = _
                    insertCommand.Parameters.Add("@name", SqlDbType.NVarChar)
    
                connection.Open()
    
                For Each excelRow As DataRow In excelTable.Rows
                    nameParameter.Value = excelRow(0)
                    insertCommand.ExecuteNonQuery()
                Next
    
                connection.Close()
            End Using
        End Using
    End Sub
    
記事No.42117 のレス /過去ログ74より / 関連記事表示
削除チェック/

■69069  Re[16]: vb.netからC++の文字列配列引数付DLLの呼び出し
□投稿者/ unagi -(2013/12/01(Sun) 18:48:38)
    No69050 (Azulean さん) に返信
    > C++/CLI で試そうと思ったら、元のマネージ String の長さがわからないからコピーを用意して、そのコピーのポインタ配列を用意してとややこしいことに
    > なってしまった。
    > 対象の関数が '\0' までしかバッファを見ないのなら、vector を1つ減らせると思います。
    > (marshal_context のスコープを長くして、sourceBuffers を消して、marshal_as<const char*> の戻り値を sourceArray に入れる)
    >
    > また、呼び出し時に 255 バイトを超える文字列がくる可能性や、MBCS 文字セットで表現できない文字がくる可能性を想定していませんので注意。
    >
    > // 知恵の拝借じゃなくて、丸投げだと思う。
    > // キーワードを示して話をしたところで解決が遅く、サンプルコードを示した方が速い聞き方になっているので。
    >
    > <コードを利用する方へ>
    > このコードは現状有姿のまま提供しているもので、不具合や脆弱性、非効率な処理が存在する可能性があります。
    > このコードを利用した時点で、利用者自身がすべての責任を負うこととし、投稿者は責任を一切持ちません。
    >
    >
    > #include <vector>
    > #include <msclr/marshal.h>
    > #include <cstring>
    >
    > using namespace System;
    >
    > namespace CppCliLib {
    >
    > public ref class CppWrapper
    > {
    > private:
    > static const size_t BUFFER_SIZE = 256;
    > public:
    > static int Execute(array<String^>^ sourceTexts,
    > [System::Runtime::InteropServices::OutAttribute] array<String^>^% destinationTexts)
    > {
    > int dataCount = sourceTexts->Length;
    > // ポインタ配列
    > // 元の配列の長さが可変長なのでvectorで管理
    > std::vector<char*> sourceArray(dataCount);
    > std::vector<char*> destinationArray(dataCount);
    > // 文字列バッファ
    > // 元の文字列の長さが不明であることと、DLLの関数が256バイトあることを前提に作っている
    > // 可能性を加味して、必ず自前のバッファにコピーする
    > std::vector<std::vector<char>> sourceBuffers(dataCount);
    > std::vector<std::vector<char>> destinationBuffers(dataCount);
    >
    > for (int i = 0; i < dataCount; ++i)
    > {
    > // バッファの準備
    > sourceBuffers[i].resize(BUFFER_SIZE);
    > destinationBuffers[i].resize(BUFFER_SIZE);
    > // ポインタ配列(vector)への代入
    > sourceArray[i] = &sourceBuffers[i][0];
    > destinationArray[i] = &destinationBuffers[i][0];
    >
    > // 元の文字列のバッファへのコピー
    > // marshal_asでメモリが確保されるが、marshal_contextのスコープが切れたら解放される
    > msclr::interop::marshal_context context;
    > strcpy_s(sourceArray[i], BUFFER_SIZE, context.marshal_as<const char*>(sourceTexts[i]));
    > }
    >
    > // DLL呼び出し
    > // TODO: 戻り値によって後の処理をする・しないを分ける必要があるかどうか?
    > int result = dllfunc(dataCount, &sourceArray[0], &destinationArray[0]);
    >
    > // 出力先バッファから出力先String^配列を作る
    > destinationTexts = gcnew array<String^>(dataCount);
    > for (int i = 0; i < dataCount; ++i)
    > {
    > // 出力先String^配列にバッファから文字列をコピーする
    > msclr::interop::marshal_context context;
    > destinationTexts[i] = context.marshal_as<String^>(destinationArray[i]);
    > }
    >
    > // 残しておいた戻り値を返す
    > return result;
    > }
    > };
    > }
    >

    Azulean さんへ
     
     返信が遅くなりましたが、丸投げ質問に対応頂き誠にありがとう御座います。
     ようやくC++の言語も判りかけてきたように思いますので、取り組んでみます。
記事No.68914 のレス /過去ログ117より / 関連記事表示
削除チェック/

■91318  動画ファイルから画像を取得する方法
□投稿者/ 虎夫 -(2019/06/16(Sun) 11:00:06)

    分類:[.NET 全般] 

    動画ファイル(mkv or mp4)をフレーム毎に画像データとして取得し
    その画像データを更にバイト配列に変換したいと考えています。

    FFmpegという外部ソフトを使って
    動画ファイルをJPEG or PNGファイルとして出力後、
    それぞれの画像ファイルを取り込んでバイト配列として取得。

    という方法なら、できるのですが、
    いったん、画像ファイルにする必要があるため、
    時間がかかる上、大きなファイルを生じてしまいます。

    VB.NETの中で動画ファイルから直接、画像データを取得したいのですが
    どうすればそのようなことが可能でしょうか?

親記事 /過去ログ158より / 関連記事表示
削除チェック/

■91319  Re[1]: 動画ファイルから画像を取得する方法
□投稿者/ キングダム -(2019/06/16(Sun) 13:18:43)
記事No.91318 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91405  Re[2]: 動画ファイルから画像を取得する方法
□投稿者/ 虎夫 -(2019/06/21(Fri) 14:36:54)
    https://www.nrecosite.com/doc/NReco.VideoConverter/

    ここにヘルプのようなものがあるのですが、
    使い方がいまいち分かりません。

    例えば、
    動画から画像をイメージデータとして取得する方法だけでも
    お教えいただけないでしょうか?
記事No.91318 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91411  Re[3]: 動画ファイルから画像を取得する方法
□投稿者/ キングダム -(2019/06/21(Fri) 22:13:33)
    No91405 (虎夫 さん) に返信
    
    こんな感じで
    
    Sub Main()
        Dim ffMpeg = New NReco.VideoConverter.FFMpegConverter()
        Dim stream = New System.IO.MemoryStream()
    
        ffMpeg.GetVideoThumbnail("test.mp4", stream, 4.5F)
    
        Dim bytes = stream.ToArray()
        System.IO.File.WriteAllBytes("test.jpg", bytes)
    End Sub
    
記事No.91318 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91424  Re[4]: 動画ファイルから画像を取得する方法
□投稿者/ 虎夫 -(2019/06/24(Mon) 20:07:44)
    ありがとうございます。

    この方法だとある指定した一つのフレームのみを取得することになりますが、

    指定した時間の区間の全フレームを取得したい場合にはどのようにしたら良いですか?

    fpsの値から1フレーム毎の秒数を割り出して
    Forループで提示してくださったコマンドを回すしかないでしょうか?
記事No.91318 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91510  Re[5]: 動画ファイルから画像を取得する方法
□投稿者/ 虎夫 -(2019/07/02(Tue) 17:53:04)
    試してみたのですが、
    画像の圧縮率が高すぎて画像が劣化しすぎなのですが。
    無圧縮で取得したいのですが、
    これは可能でしょうか?

    見たところ、圧縮形式や画像形式を指定する引数が見当たらないので
    対応していないということでしょうか?

    もし、他に良い方法があれば教えていただけないでしょうか?
記事No.91318 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91512  Re[6]: 動画ファイルから画像を取得する方法
□投稿者/ Hongliang -(2019/07/02(Tue) 18:25:45)
    わざわざデコード側で再圧縮するとも思えないので、動画ソースの時点で圧縮されているのではないかと思うのですが……私はそのライブラリは使っていないので断言はできませんが。
    とりあえず、クラス名などからしてffmpegを内部で使用しているようですので、確認作業として以下を提案します。

    ffmpegをダウンロードしてきて、コマンドプロンプトで以下を実行し、作成されたtest.bmpを確認する。
    ffmpeg.exe -i "動画ファイルのパス" -ss 4.5 -vframes 1 -c:v bmp test.bmp

    // 私ならどうだろう、とりあえずOpenCvSharpかなぁ。
記事No.91318 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91514  Re[7]: 動画ファイルから画像を取得する方法
□投稿者/ 虎夫 -(2019/07/02(Tue) 19:00:52)
    No91512 (Hongliang さん) に返信

    普段、ffmpegを使っていますが、
    こちらは、bmp png jpegから選択することができます。

    しかし、ffMpeg.GetVideoThumbnailのデフォルトでjpeg圧縮されているようです。

    OpenCvSharpというのは一度試してみます。
記事No.91318 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91568  Re[8]: 動画ファイルから画像を取得する方法
□投稿者/ 虎夫 -(2019/07/07(Sun) 18:15:28)
    OpenCvSharpを使ってみましたが、
    普通に使えることが分かりました。
    単に動画をbmpファイルの連番出力するだけでも
    ffmpeg.exeよりも二倍近く速いです。

    しかし、packagesフォルダーの中に入っているDLLファイルサイズが異様に大きく
    100 MB近くになってしまいます。
    このばかでかいファイルってどうにかならないのでしょうか?
    しかもslnのプロジェクトファイルごとにこれが生成されるので、
    プロジェクトがたくさんあるとそれだけファイルサイズも大きくなってしまいます。

    普段、dropboxで自宅と職場の間でデータをやりとりしているので
    できるだけファイルサイズを下げたいのですが・・

    packagesだけ、別のフォルダーに移動させることってできないのでしょうか?

    あと、ffmpegのDLLファイルが入っていることから
    動画取得部分はffmpegを使っているはずなのに
    ffmpeg.exeよりも二倍近く速くなるのはなぜでしょうか?
記事No.91318 のレス /過去ログ158より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -