[[20201225143843]] 『1000枚の画像を画像毎に指定した座標通りにトリミ』(初心者花子) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『1000枚の画像を画像毎に指定した座標通りにトリミングしたい。』(初心者花子)

フォルダに1000枚の画像(サイズはx:1254pixel,y:1254pixel)が入ってます。
エクセルには各画像で四角にトリミングしたい座標4点を示しています。(下記)
画像とエクセル情報を読み込んでトリミングするVBAを作りたいです。
初心者で全く分からないです。どうかご教授お願いします。

画像 ,A座標 , B座標 ,C座標 ,D座標
1.jpg,(400,400),(800,400),(400,800),(800,800)
2.jpg,(100,200),(500,200),(100,600),(500,600)
3.jpg,(600,300),(1000,300),(600,700),1000,700)



< 使用 Excel:Excel2016、使用 OS:Windows10 >


https://excel-ubara.com/excelvba5/EXCELVBA256.html
わたしは、やった事ないので。。。がんばってくださいませ
^^;。。。m(__)m
(隠居じーさん) 2020/12/25(金) 17:05

似たような質問があったので、回答が付けば参考になるでしょう。

https://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=193182&rev=0
(変なおやじ) 2020/12/25(金) 18:26


初心者丸子 → 初心者花子
マルチポストかよー。
おまけにニックネーム一部変更しちゃってさ。
詐欺みたい。

(マルチ) 2020/12/25(金) 21:48


 ご自身の責任の元、出来るまで頑張る、お気持ちが
あるならば、お付き合い下さる、先生は、いらっし
ゃると思いますよ。。。多分。。。ですけど。。。
>>初心者で全く分からないです。どうかご教授お願いします。
まず、基本部分は、[本読んで]って言われるかもですが。^^;
m(_ _)m
(隠居じーさん) 2020/12/26(土) 07:22

 詳しい知識がないのでお聞きします。

 1.座標って、単位は何なのですか?

 2.トリミングの意味を明確にした方がいいんじゃないですか?
   雰囲気としては、大きさの変更かと思うんですが、
   切り取りの意味もありますからねぇ・・

(半平太) 2020/12/26(土) 09:31


追加で確認

仮に切り取りの意味のトリミングだとして、
トリミングした後の画像を、どうしたいのですか。
1)シートに貼り付け
2)指定のフォルダに保存

サロンは、マルチ禁止なので、どちらで継続するか宣言してください。

(マナ) 2020/12/26(土) 15:05


もうひとつ

座標は、4点必要ですか。左上と右下で十分では?

(マナ) 2020/12/26(土) 15:20


 画像を本当に加工するのであれば、EXCEL にこだわらず画像処理ソフトを使うのも手かと思います。
 コマンド処理の定番は ImageMagick ですが、コマンドで縮小、トリミング、合成などたいていの処理
 ができます。

 Windows であれば、下記から ImageMagick-7.0.10-35-portable-Q8-x64.zip あたりをダウンロードし
https://imagemagick.org/script/download.php
 マクロを実行するファイルの下に ImageMagick として展開し、
 マクロのあるファイルのあるフォルダ下に、
 ImageIn フォルダを作成し中に処理用のファイルを置き
 ImageOut フォルダを出力用に準備します。

 A列がファイル名
 B列が切り出し開始位置(X)
 C列が切り出し開始位置(Y)
 D列が切り出し幅
 E列が切り出し高さ
 とした場合、

 Sub Sample()
    Dim wsh
    Set wsh = CreateObject("WScript.Shell")

    Dim imcom
    imcom = """" & ThisWorkbook.Path & "\ImageMagick\convert.exe"""

    Dim imgIn
    Dim imgOut
    Dim trimSize
    Dim r
    For r = 1 To 10
        imgIn = """" & ThisWorkbook.Path & "\ImageIn\" & Cells(r, "A").Value & """"
        imgOut = """" & ThisWorkbook.Path & "\ImageOut\" & Cells(r, "A").Value & """"
        trimSize = Cells(r, "D").Value & "x" & Cells(r, "E").Value & "+" & Cells(r, "B").Value & "+" & Cells(r, "C").Value
        wsh.Run Join(Array(imcom, imgIn, "-crop", trimSize, imgOut), " "), 0, True
    Next
 End Sub

 で処理ができます。

 ちょっとコードのごみ削除 17:54
(QS) 2020/12/26(土) 17:20


 説明サイトのリンクを貼り忘れました。
https://qiita.com/yoya/items/62879e6e03d5a70eed09#-flatten
(QS) 2020/12/26(土) 17:28

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.