vbscript - tamaños - tamaño en pixeles para imprimir fotos
¿Cómo determino las dimensiones de la imagen de un archivo tiff? (2)
En VBScript, puede determinar las dimensiones de la imagen de dos maneras:
Uso de la Biblioteca de Automatización de WIA ( enlace de descarga , documentación de MSDN , un excelente artículo de Hey, Scripitng Guy! Sobre el tema ). Una vez que tenga la biblioteca wiaaut.dll registrada, puede usar el siguiente código simple:
Set oImage = CreateObject("WIA.ImageFile") oImage.LoadFile "C:/Images/MyImage.tif" WScript.Echo "Width: " & oImage.Width & vbNewLine & _ "Height: " & oImage.Height
Usando el método
GetDetailsOf
para leer las propiedades de archivo extendido correspondientes. Este es un método nativo de creación de scripts de Windows, por lo que no se requieren bibliotecas externas; pero el código es más largo:Const DIMENSIONS = 31 CONST WIDTH = 162 CONST HEIGTH = 164 Set oShell = CreateObject ("Shell.Application") Set oFolder = oShell.Namespace ("C:/Images") Set oFile = oFolder.ParseName("MyImage.tif") strDimensions = oFolder.GetDetailsOf(oFile, DIMENSIONS) strWidth = oFolder.GetDetailsOf(oFile, WIDTH) strHeigth = oFolder.GetDetailsOf(oFile, HEIGTH) WScript.Echo "Dimensions: " & strDimensions & vbNewLine & _ "Width: " & strWidth & vbNewLine & _ "Height: " & strHeigth
Este script genera algo como:
Dimensiones: 2464 x 3248
Ancho: 2464 píxeles
Altura: 3248 pixelespor lo tanto, si necesita números simples, deberá extraerlos de las cadenas devueltas.
También hay otro problema con este método: los índices de propiedad (esas constantes al principio en el script) son diferentes en las diferentes versiones de Windows, como expliqué en esta respuesta . La secuencia de comandos anterior es para Windows 7, pero si usa otras versiones de Windows o si desea que la secuencia de comandos funcione en diferentes versiones de Windows, deberá usar índices específicos de la versión. La lista más completa de índices de propiedades disponibles está aquí .
Tengo un script de vbscript y tengo que masticar un directorio de archivos .tif. Para cada archivo, necesito determinar si el archivo está proporcionado como un paisaje o un retrato. Básicamente, necesito poder obtener las dimensiones de la imagen para cada archivo. Entonces, he visto algunos ejemplos de personas que leen los encabezados de los archivos de archivos para extraer este tipo de información de los archivos jpg o bmp. ¿Alguien ha hecho lo mismo para extraer las dimensiones de un archivo tiff?
Recomendaría utilizar la imagen DotImage Photo de Atalasoft. Es potente y ¡es gratis! Pero es un paquete .NET, por lo que tendrás que hacer un poco de Regasm Magic para que funcione. Verificación Use vb.net en VBScript antes de comenzar.
Aquí está el código que necesitará para obtener las dimensiones.
Public Function GetHeight(path As String) As Integer
Using stm As New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)
Dim decoder As New TiffDecoder()
If Not decoder.IsValidFormat(stm) Then
Throw New Exception("not a TIFF")
End If
Dim image As AtalaImage = decoder.Read(stm, Nothing)
Return image.Height
'' Return image.Width --- To return the Width.
End Using
End Function