Núcleo API

API principal

Aspose.Imaging FOSS para la superficie pública completa de .NET son tres clases: ImageProbe (la fachada estática), ImageInfo (el valor de resultado), y ImageFormat (el enum de formato). Esta página cubre cómo se combinan como un contrato, más allá del recorrido por característica en Características y Funcionalidades.


El contrato de tres clases

  • ImageProbe — estático, sin estado. Cada llamada es independiente; no hay nada que configurar o disponer.
  • ImageInfo — sellado, inmutable. Todas las cinco propiedades (Format, Width, Height, BitDepth, FrameCount) son de solo lectura una vez construidas.
  • ImageFormat — un enum con un valor por cada formato reconocido, más Unknown.
using Aspose.Imaging.Foss;

var info = ImageProbe.ProbeFile("photo.jpg");
ImageFormat format = info.Format;   // always set
int? width = info.Width;            // set only when the format's header carries it

Construyendo ImageInfo directamente

El constructor de ImageInfo es público — solo se requiere format, cualquier otro parámetro tiene como valor predeterminado null. Esto es útil para pruebas unitarias que necesitan un resultado sustituto sin examinar un archivo real:

using Aspose.Imaging.Foss;

// Fake a PNG result for a test double, with no dimensions
var fakeInfo = new ImageInfo(ImageFormat.Png);

// Fake a fully-populated result
var fullInfo = new ImageInfo(ImageFormat.Gif, width: 64, height: 48, bitDepth: 8, frameCount: 3);

No hay una forma correspondiente de mutate an ImageInfo después de la construcción — cada propiedad es de solo lectura, por lo que una instancia sondeada o construida es segura para pasarla y almacenar en caché sin copia defensiva.


Elegir la sobrecarga correcta

OverloadUsar cuando
ImageProbe.ProbeFile(path)Tienes una ruta de archivo y quieres el ImageInfo completo
ImageProbe.Probe(stream)Ya tienes un Stream abierto (posicionable o no) y deseas el ImageInfo completo
ImageProbe.Probe(data)Ya tienes los bytes en memoria y deseas el ImageInfo completo
ImageProbe.DetectFormat(stream) / (data)Solo necesitas ramificar en ImageFormat — omite el análisis del encabezado más allá de la firma del formato

ProbeFile abre y lee el archivo por sí mismo — no es necesario abrir un FileStream primero solo para llamar a Probe(stream).


Sondeo por lotes de un directorio

Debido a que ImageProbe nunca lanza una excepción, un escaneo de directorios puede llamarlo en un bucle ajustado sin try/catch por archivo:

using Aspose.Imaging.Foss;

foreach (var path in Directory.GetFiles("incoming"))
{
    var info = ImageProbe.ProbeFile(path);

    if (info.Format == ImageFormat.Unknown)
    {
        Console.WriteLine($"{path}: not a recognized image format, skipping");
        continue;
    }

    Console.WriteLine($"{path}: {info.Format} {info.Width}x{info.Height}");
}

Cualquier archivo cuyo encabezado no coincida con uno de los 11 formatos reconocidos se resuelve a ImageFormat.Unknown en lugar de lanzar una excepción — el bucle anterior nunca necesita un bloque catch.


El contrato de nunca lanzar excepciones

Esto no es un comportamiento incidental — es una parte deliberada del contrato API. Si el encabezado de un formato reconocido se trunca o está mal formado a mitad del análisis, ImageProbe aún devuelve un ImageInfo con Format establecido al formato que sí reconoció; no propaga una excepción de análisis al llamador. Sólo se garantiza Format — trate cada otra propiedad como opcional sin importar qué formato se detectó.


Problemas comunes

ProblemaCausaCorrección
El ImageInfo construido no coincide con un resultado de sondeo realLas instancias construidas manualmente no validan la consistencia entre los camposUtiliza la construcción manual solo para dobles de prueba, no como sustituto de sondear archivos reales
Llamar a Probe cuando DetectFormat bastaríaAnálisis de encabezado innecesario cuando solo se necesita el formatoUtiliza DetectFormat si nunca lees Width/Height/BitDepth/FrameCount
Formato Unknown para un archivo que esperas que sea compatibleEl encabezado no coincide con ninguna de las 11 firmas reconocidas, o el archivo es de un formato completamente diferenteConfirma el archivo contra el lista de formatos compatibles

FAQ

¿Puedo crear una subclase de ImageInfo o ImageProbe?

No. ImageInfo es sealed y ImageProbe es static — ninguno está diseñado para subclasificar o instanciar mediante herencia.

¿Es ImageProbe seguro para hilos?

ImageProbe no mantiene estado mutable entre llamadas — cada llamada a Probe, ProbeFile o DetectFormat es independiente, lo que hace que las llamadas concurrentes desde varios hilos sean seguras.

¿Necesito liberar algo?

No. ImageProbe no tiene recursos IDisposable propios. Si pasas un Stream que tú mismo abriste, sigues siendo responsable de liberar ese flujo — Probe(stream) no lo cierra.


API Reference Resumen

Clase / MétodoDescripción
ImageProbe.ProbeFile(path)Examinar un archivo por ruta
ImageProbe.Probe(stream)Examinar un Stream
ImageProbe.Probe(data)Examinar un byte[]
ImageProbe.DetectFormat(stream)Solo formato, de un Stream
ImageProbe.DetectFormat(data)Solo formato, de un byte[]
ImageInfo(format, width, height, bitDepth, frameCount)Constructor público — solo se requiere format
ImageInfo.Format / .Width / .Height / .BitDepth / .FrameCountPropiedades de resultado de solo lectura
ImageFormatEnumeración: Unknown, Png, Jpeg, Gif, Bmp, WebP, Ico, Tiff, Psd, Emf, Wmf, Dicom

Ver también

 Español