画像データの処理に関するソフトの探し方

このQ&Aのポイント
  • プログラムに詳しくない人でも使える、画像データの処理が可能なソフトを探しています。
  • データベースフォルダAに保存されている画像のファイル名を、指定した数字をキーにしてデータベースフォルダBに変更したいです。
  • データベースBに保存されるファイル名は、(1から連番)-(検索されたファイルの数字)-(そのファイルの検索された回数).jpgとなります。
回答を見る
  • ベストアンサー

説明に自信ありませんが。

以前質問させていただいた者です、 解答していただいた方ありがとうございました。 さっそく本屋さんで見てみましたが、私が理解するには多少なりとも プログラムに詳しい人がそばいないと難しいと思い、 改めて質問させていただきます。 自分にはプログラムはまだまだ時間がかかるので、以下のような 処理の可能なソフトを探しています。何かありますでしょうか? 画像データを取り扱うもので、以下のような処理をしたいのですが・・。 データベースフォルダA 001.jpg 002.jpg 003.jpg 004.jpg ・・・ 2000.jpg (1) 数字を入力   352 200 212 1555 2 33 525 223 200 33 33 ・・・  (2) 実行   352をキーに352.jpgを検索し 1-00352-001.jpg とファイル名を変更して   データベースフォルダBに。   200をキーに200.jpgを検索し 2-00200-001.jpg とファイル名を変更して   データベースフォルダBに。   212をキーに212.jpgを検索し 3-00212-001.jpg とファイル名を変更して   データベースフォルダBに。   同様に 1555から 4-01555-001.jpg 2から 5-00002-001.jpg        33から 6-00033-001.jpg 525から 7-00525-001.jpg 223から 8-00223-001.jpg そして、同じ番号がキーに なっている場合(次の200の場合) 200.jpgを 9-00200-002.jpgと変更してデータベースフォルダBに。 その次の33は33.jpgを 10-00033-002.jpg  次は 11-00033-003.jpg と言うように、データベースAから (1から連番)-(検索されたファイルの数字)-(そのファイルの検索された回数).jpg と名前を変更したものをデータベースBとして作成したいのですが・・。 (例えば2-00200-001.jpg と 9-00200.002.jpgは同じ画像になります)。 こんなかんじですが、いかがなものでしょう?やはり一般人にこなせるレベルじゃないですか?

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

環境が書いてなかったから、VB6だと思ってました... アクセスだったのですね(^^;) アクセスだと・・・ ファイルリストボックスはありません。 フォーカスを持っているコントロールを使用不可にできません。 恐らくそれがエラーの原因になってると思います。 ですので、for アクセス バージョンです。 '処理内容としては '1.キーを元に"*-00001-*.jpg"というようなパターンを作成 '2.getFiles関数により同パターンのファイル数を取得 '3.新たな名前の作成をしてコピー ' ' '必要なオブジェクト/コントロール 'フォーム1 '│ '├コマンドボタン1 [Command1] '│ '└コマンドボタン2 [Command2] Option Compare Database Option Explicit Private Const RENAME_KEY_FILE  As String = "c:\TEST.txt" Private Const RENAME_KRY_CUT  As String = "," Private Const DIR_DB_A As String = "C:\A\" Private Const DIR_DB_B As String = "C:\B\" Private lngCntKey  As Long   'キーの数 Private valKwyAry  As Variant 'キーを配列で記憶 'キーファイルを読み取る Private Sub Command1_Click()   Dim lngFile   As Long   Dim lngFileSize As Long   Dim strWork   As String   '--- キーファイルから、文字列の取得 ---   lngFileSize = FileLen(RENAME_KEY_FILE)   strWork = String(lngFileSize, vbNullChar)   lngFile = FreeFile   Open RENAME_KEY_FILE For Binary As #lngFile     'バッファ取得     Get #lngFile, , strWork   Close #lngFile   '---- 取得した文字列の分解 ---   On Error Resume Next   lngCntKey = 0   Erase valKwyAry   valKwyAry = Split(strWork, RENAME_KRY_CUT) 'サンプルではカンマ区切り   lngCntKey = UBound(valKwyAry) + 1      'キーの数を得る   On Error GoTo 0   'キーが存在したらリネーム処理ボタン使用可能   If (lngCntKey > 0) Then     Me.Command2.Enabled = True     Me.Command2.SetFocus     Me.Command1.Enabled = False     MsgBox "キー情報を取得しました"   Else     MsgBox "キー情報を取得できませんでした"   End If End Sub Private Sub Command2_Click()   Dim i        As Long   Dim strFileName   As String   Dim strNewFileName As String   Dim strPattern   As String   Dim lngCntMain   As Long   Dim lngCntSub    As Long   Dim lngFileCnt   As Long   With Me     'メインカウンタの初期化     lngCntMain = 0     For i = 0 To lngCntKey - 1       'ファイル名を作成       strFileName = DIR_DB_A & valKwyAry(i) & ".jpg"       'ファイルの有無を調べる       If Dir(strFileName) <> "" Then         '--- 存在したら ---         'メインカウンタを1増やす         lngCntMain = lngCntMain + 1         '新たなファイル名の途中部分をパターンを作成         strPattern = "*-" & Format(valKwyAry(i), "00000") & "-*.jpg"         '作成したパターンのファイルが、コピー先に何個あるかを得る         lngFileCnt = getFiles(DIR_DB_B, strPattern)         'サブカウンタをセット(同じパターンのファイル数+1)         lngCntSub = lngFileCnt + 1         'コピー先名を定義         strNewFileName = DIR_DB_B & _               lngCntMain & "-" & _               Format(valKwyAry(i), "00000") & "-" & _               Format(lngCntSub, "000") & ".jpg"         'コピー         Call FileCopy(strFileName, strNewFileName)       End If     Next i   End With   MsgBox "変更終了しました" End Sub Private Sub Form_Load()   With Me     .Command1.Caption = "ファイル取得"     .Command2.Caption = "コピー実行"     .Command2.Enabled = False   End With End Sub '【機 能】 :フォルダ内に存在するファイルの数を取得する '【返り値】 :フォルダに含むファイルの数 '''パラメータ1(inPath)    :ファイルパス '''パラメータ2(inFileFilter) :ファイルのフィルタ Private Function getFiles(inPath As String, inFileFilter As String) As Long   Dim strFileName As String   '最初ののJEPGファイルを見つける   strFileName = Dir(inPath & inFileFilter)   '取得できなくなるまで繰り返す   Do While strFileName <> ""     '拡張子を持っているようなフォルダ名をはじく処理     If (GetAttr(inPath & strFileName) And vbDirectory) <> vbDirectory Then       getFiles = getFiles + 1     End If     '次のファイルを取得する     strFileName = Dir   Loop End Function

kenta1005
質問者

お礼

またまた返事が遅れてしまいました。 ようやく、プログラム自体稼動するようになりました。 本当にありがとうございました。

その他の回答 (2)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

すいません訂正です Option Explicit ↑これ二つ存在してます。一つでいいです。 Private lngCntKey  As Long   'キーを配列で記憶 Private valKwyAry  As Variant 'キーの数 コメントが反対です Private lngCntKey  As Long   'キーの数 Private valKwyAry  As Variant 'キーを配列で記憶 が正しいです。 あとロード時のコマンドボタン2のキャプションがリネームになってますが、機能はリネームではありません。コピーです。 過去のファイルから引っぱってきて作成したサンプルなので、修正し忘れてました。。。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

サンプルです。 処理内容としては 1.キーを元に"*-00001-*.jpg"というようなパターンを作成 2.ファイルリすとボックスにパターンをセット 3.ファイルのカウントをファイルリストボックスから読み取る 4.新たな名前の作成をしてコピー 必要なオブジェクト/コントロール フォーム1[Form1] │ ├コマンドボタン1[Command1] │ ├コマンドボタン2[Command2] │ └ファイルリストボックス[File1] あとサンプルでは Private Const RENAME_KEY_FILE  As String = "c:\TEST.txt" Private Const RENAME_KRY_CUT  As String = "," として、キーをファイルから読み取ってます。 カンマ区切りのキーが入ったテキストファイルが必要です。 元のJPGフォルダ[DIR_DB_A] 出力先のJPGフォルダ[DIR_DB_A] で宣言してあるので、任意に変更してください。 Option Explicit Option Explicit Option Compare Text 'ここに記されているプログラムは、文字列の比較を大文字小文字の区別をしない事を宣言 Private Const RENAME_KEY_FILE  As String = "c:\TEST.txt" Private Const RENAME_KRY_CUT  As String = "," Private Const DIR_DB_A As String = "C:\A\" Private Const DIR_DB_B As String = "C:\B\" Private lngCntKey  As Long   'キーを配列で記憶 Private valKwyAry  As Variant 'キーの数 'キーファイルを読み取る Private Sub Command1_Click()   Dim fileBuf()  As Byte   Dim lngFile   As Long   Dim lngFileSize As Long   Dim strWork   As String      '--- キーファイルから、文字列の取得 ---   lngFileSize = FileLen(RENAME_KEY_FILE)   ReDim fileBuf(lngFileSize - 1) As Byte      lngFile = FreeFile   Open RENAME_KEY_FILE For Binary As #lngFile     'バッファ取得     Get #lngFile, , fileBuf   Close #lngFile   strWork = StrConv(fileBuf, vbUnicode)      '---- 取得した文字列の分解 ---   On Error Resume Next   lngCntKey = 0   Erase valKwyAry   valKwyAry = Split(strWork, RENAME_KRY_CUT) 'サンプルではカンマ区切り   lngCntKey = UBound(valKwyAry) + 1      'キーの数を得る   On Error GoTo 0      'キーが存在したらリネーム処理ボタン使用可能   If (lngCntKey > 0) Then     Me.Command1.Enabled = False     Me.Command2.Enabled = True     MsgBox "キー情報を取得しました"   Else     MsgBox "キー情報を取得できませんでした"   End If End Sub Private Sub Command2_Click()   Dim i        As Long   Dim strFileName   As String   Dim strNewFileName As String   Dim strPattern   As String   Dim lngCntMain   As Long   Dim lngCntSub    As Long      With Me     lngCntMain = 0          'ファイルリすとボックスのパスを設定     .File1.Path = DIR_DB_B          For i = 0 To lngCntKey - 1       'ファイル名を作成       strFileName = DIR_DB_A & valKwyAry(i) & ".jpg"              'ファイルの有無を調べる       If Dir(strFileName) <> "" Then         '--- 存在したら ---                  'リネームのカウンタを1増やす         lngCntMain = lngCntMain + 1                  '新たなファイル名の途中部分を定義         strPattern = "*-" & Format(valKwyAry(i), "00000") & "-*.jpg"         .File1.Pattern = strPattern         .File1.Refresh                  'サブカウンタをセット         lngCntSub = .File1.ListCount + 1                  '新たな名前を定義         strNewFileName = DIR_DB_B & _               lngCntMain & "-" & _               Format(valKwyAry(i), "00000") & "-" & _               Format(lngCntSub, "000") & ".jpg"         'コピー         FileCopy strFileName, strNewFileName                End If     Next i   End With      MsgBox "変更終了しました" End Sub Private Sub Form_Load()   With Me     .Command1.Caption = "ファイル取得"     .Command2.Caption = "リネーム実行"     .Command2.Enabled = False     .File1.Visible = False   End With End Sub

kenta1005
質問者

補足

お礼が遅くなりました、すみません。実はこのプログラムいただいてから アクセスの基礎から勉強していたもので・・。で、ソフトの概要はそこそこつかめたのですが、この命令文を何処に貼り付ければよいのかわからなくて・・。 新規フォームを作成し、コマンド1ボタンとコマンド2ボタンとリストボックスを作成、コマンド1ボタンの「クリック時」のイベントプロージャに貼り付けてみたのですが、うまくいかなくて・・。リストボックスは見えなくなってしまうし、エラーで File1.Path = DIR_DB_B の行にエラーがあるらしくそれを飛ばすと今度は Me.Command1.Enabled = False の所でもコントロールがなんたらとエラーが出てしまい、アクセスVBAの本を片手に途方に暮れています。もう少し具体的に教えていただけるとうれしいのですが・・・。               

関連するQ&A

  • ファイル名変更してコピー

    エクセル2000で次のような処理が出来ますでしょうか。 まず前提として、シート1のA列にフォルダAの中の001.jpg~100.jpgと言う画像 がリンク付けてあります。(A1は001.jpgに~A100は100.jpgに)。 そこで、シート1のB列にB1からB***まで数字をガンガン打ち込んでいきます。 打ち込み終わりで、実行すると例えばB1が30だとすると030.jpgを 1-030-001.jpg( (1から連番)-(画像番号)-(検索された回数).jpg ) と言うふうにしてフォルダBにコピーしたいのですが・・。 こんな事出来ますでしょうか?

  • ファイルを保存する際の名前の変更に関して。

    ネットなどから入手したマイピクチャにあるたくさんの画像を携帯で見るためSDカードに移す際に、画像の名前をファイル名.JPGにしてからでないと携帯で読み取ってくれなかったため、マイピクチャにある画像の名前を一個一個変更しているのですが、すごい量なので全部そのやりかたでやりたくありません。それで「.JPG」の文字コピーしてファイル名の最後に貼り付けてTabキーを押してまた貼り付けるという動作をしようと思ったのですが、ファイル名が同一のものがあるためファイル名に書かれている数字をひとつひとつ足していかなければならないのでコピー貼り付け作戦は使えません。すごく困っています汗 貼り付けた数字が次に貼り付けるとひとつ増えるとか言う便利な機能とかないですかね。

  • 便利な画像ビューワーを紹介下さい。

    フォルダAに画像ファイルa.jpgが有り、フォルダBにもa.jpgが有るとき、 フォルダBのa.jpgをフォルダAに移動すると、 ”同じ名前のファイルがあるよ。上書きしますか?”とダイアログが 教えてくれます。 このような時に、本当に同一画像であれば上書きしても良いし、 違う画像で有れば、ファイル名をa_1.jpgなどと変更して移動して くれると大変便利だと思います。 こういうことを自動でやってくれるフリーソフトのビューワーってないですか? また、自動が無理な場合は、そのような時にそれぞれの画像を表示して さえくれれば、後は人が判断して処理下さいなんてことでも良いです。 ここに色々あるから自分で探して、なんて回答はなしでお願いします。

  • 大量のファイルの名前を一括して変更する

    本のデータベースをcsvファイルに落としました。データ数は1000件です。 ↓csvの形式 連番・書名・画像1ファイル名・画像2ファイル名 1・日本史・m123456789123456780.jpg・m023456789123456789.jpg 2・世界史・m123456780123456789.jpg・空白 3・神学論・m123406789123456789.jpg・m123456789123056789.jpg これを以下の仕様に変更したいのです。 ↓csvの形式 連番・書名・画像1ファイル名・画像2ファイル名 1・日本史・1-1.jpg・1-2.jpg 2・世界史・2-1.jpg・空白 3・神学論・3-1.jpg・3-2.jpg jpgファイルは約1200個で専用フォルダに入っていますが、ファイル名に「m123456789123456789.jpg」の規則性があるものの、数値部分が任意です。 win10を使っています。エクセル等のオフィス製品はあります。 よろしくお願い致します。

  • 【php】画像のアップロードの方法

    画像のアップロードは大きく分けて以下の3つの方法があると思います (1) ●画像を (ユニークID).jpg の名前で保存 呼び出すときは、ユニークIDに紐付いた画像を呼び出す。 (2) ●画像を (任意のファイル名).jpg の名前で保存 同時に、画像のファイル名をデータベースに保存。 呼び出すときはデータベースに保存されたファイル名に紐付いた画像を呼び出す (3) ●画像データをデータベースに直接保存 呼び出すときは、データベースから呼び出す どの方法が一番いいでしょう?

    • ベストアンサー
    • PHP
  • windows11対応リネームソフトを探しています

    画像のファイル名の頭にフォルダ名を付けれるリネームソフトを探しています(windows11) ☆現在、このようなフォルダ/ファイルの配置構成になっています フォルダA     ∟画像.jpg フォルダB     ∟ 画像.jpg フォルダC     ∟ 画像.jpg ☆リネームソフトで下記のような、各画像ファイルの頭にフォルダ名を付けたいです フォルダA     ∟ フォルダA_画像.jpg フォルダB     ∟ フォルダB_画像.jpg フォルダC     ∟ フォルダC_画像.jpg ※ flexible renamerというリネームソフトでは上記のリネームができたのですが、Windows11には対応していないようでソフト自体が動作しませんでした。 上記のリネームができるおすすめソフトを教えてください。

  • ファイル名を関連性を維持しつつ変更する

    本のデータベースをcsvファイルに落としました。データ数は1000件です。 ↓csvの形式 連番・書名・画像1ファイル名・画像2ファイル名 1・日本史・abc.jpg・xyz.jpg 2・世界史・opq.jpg・空白 3・神学論・abx.jpg・axz.jpg ※jpgファイル名に規則性がない これを以下の仕様に変更したいのです。 ↓csvの形式 連番・書名・画像1ファイル名・画像2ファイル名 1・日本史・1-1.jpg・1-2.jpg 2・世界史・2-1.jpg・空白 3・神学論・3-1.jpg・3-2.jpg win10とエクセルです。 よろしくお願い致します。

  • C言語からデータベースにアクセス

    現在C言語で作成したシステムで MySQLで作成されたデータベースに格納されている画像のヒストグラム情報(すでに数値化して格納してあります)を取得 →プログラム内で処理→処理後の画像のファイル名、ヒストグラム情報をデータベースに格納 (C言語プログラム、データベースともに同じサーバー機に入っています) という処理を行いたいと思っているのですが、どのようにするのが良いでしょうか? データベースからのデータ取得はCから検索キーを指定して、データを検索、取得できればなおよいです。 PostgreSQLであればlibpqなどのライブラリがあるようですが、MySQLはどうにもわかりません。 C言語で作成したプログラムをCGIとして実装すればよいとは思うのですが、 解説サイトではフォームからの入力ばかりで、データベースから直接の受け渡しや、 画像情報のような大量のデータの受け渡しを解説しているサイトは見当たりませんでした。 なお、データベース操作はphpで行っています。 分かり辛い分で申し訳ありませんが、最悪Cプログラムからデータベースへのデータ格納だけでもかまいませんので、ご回答お願いします。

  • 検索結果から使用する画像ビューア

    下記の様なフォルダとファイルがありエクスプローラから「2000」を検索したとします。二つのフォルダは同一ディレクトリに入れています。 果物フォルダ りんご2000.jpg いちご2009.jpg 野菜フォルダ レタス2000.jpg トマト2009.jpg そうするとりんご2000.jpgと、レタス2000.jpgが表示されます。 WindowsXPのデフォルトの画像ビューア、Windows Picture and Fax Viewerを使ってりんご2000.jpgを閲覧し、矢印キーを押すと次の画像にジャンプします。 その場合次に表示される画像はレタス2000.jpgです。 ご存知でした? 私が知る限りの画像ビューアは矢印キーで次の画像にジャンプすると、いちご2009.jpgが表示されます。 このWindows Picture and Fax Viewerのような動きをしてくれる画像ビューアがあれば教えていただけないでしょうか。 このデフォルトのビューアだと機能的にちょっと役不足ですよね?

  • Win7、ファイル検索で表示されない

    Win7を利用しています あるデスクトップにあるフォルダー(a)に画像が160,000件程度入っています この中に特定のファイルがあるかどうか検索したいと思っています 例えば、「00000047.JPG」のファイルがあるかどうか検索したいと思い スタートボタンを押下後、「プログラムとファイルの検索」に該当の「00000047.JPG」 を入れて検索してもaフォルダーに該当ファイルがあると表示されません しかし、同じファイル名の画像ファイルをデスクトップに作成し、aフォルダーに コピーしようとすると、該当ファイルがあると表示されます つまり、Win7の検索機能で、該当ファイルの検索ができません。 何故でしょうか また、エクスプローラを利用してaフォルダーの中身を該当ファイルをみようとして、 名前の昇順にしてみているのですが 最初にくるのが、000000A0.JPG、000000A1.JPG・・・となって、それよりも前に表示される べきと思われる、00000047.JPGが表示されません。 名前の昇順なら、00000047.JPG、000000A0.JPG・・・と表示されるりでないかと思うのですが・・・ 何か検索の時の設定等があるのでしょうか?