メモ

主にプログラミング系の備忘録

画像まわり

'なんか汎用化ニーズがありそうなので
'指定したファイルの容量を返す関数
'usage
' double ファイル容量 = getFileSize(【ファイル名(フルパス)】,【[オプション]単位】)
'単位について:デフォルト→キロバイト "b"→バイト "M"→メガバイト "G"→ギガバイト
'テラバイト以降の実装は良しなに^^
'ていうか、よっぽど大容量のファイルを扱わない限りfileLen関数でよさそう
Public Function getFileSize(sFileName As String, Optional sUnit As String = "") As Double
    Dim fso As Object
    Dim f As Object
    
    'ファイルが見つからない場合
    If Dir(sFileName) = "" Then
        getFileSize = 0
        Exit Function
    End If
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.GetFile(sFileName)
    
    If sUnit = "b" Or sUnit = "B" Then 'バイト
        getFileSize = f.Size
    ElseIf sUnit = "M" Or sUnit = "m" Then 'メガバイト
        getFileSize = f.Size / 1024 / 1024
    ElseIf sUnit = "G" Or sUnit = "g" Then 'ギガバイト
        getFileSize = f.Size / 1024 / 1024 / 1024
    Else 'デフォルト:キロバイト
        getFileSize = f.Size / 1024
    End If
    
End Function


'指定した画像ファイルの高さ/幅を取得する関数
'usage(高さについても同様)
'Long 画像の幅(pixel) = getPicWidth(【画像ファイル名フルパス】)
'
'LoadPicture関数で画像として認識できない形式(PNG)だったり、そもそも画像ファイルでない場合や、ファイル自体が見つからない場合など
'エラーになるような指定をした場合は-1を返す
'なので、if getPicHeight < 0 Thenなどで呼び出し元で実装する必要あり。

Public Function getPicHeight(sFileName As String) As Long
    Dim p As Object
    On Error GoTo Err_Trap
    Set p = LoadPicture(sFileName)
    getPicHeight = CLng(p.Height * 24 / 635)
    Exit Function
    
Err_Trap:
    'エラーの場合は-1を返す
    getPicHeight = -1
End Function

Public Function getPicWidth(sFileName As String) As Long
    Dim p As Object
    On Error GoTo Err_Trap
    Set p = LoadPicture(sFileName)
    getPicWidth = CLng(p.Width * 24 / 635)
    Exit Function
    
Err_Trap:
    'エラーの場合は-1を返す
    getPicWidth = -1
End Function