Frage

Ich brauche die Bildabmessungen eines JPEG in C ++ zu erhalten. Ich suche entweder eine ziemlich einfache Art und Weise es oder eine kleinere Bibliothek zu tun, die diese Funktionalität zur Verfügung stellt. Ich arbeite in C ++ auf OpenVMS, so dass alle externen Bibliotheken haben auf unseren Systemen kompilieren angepasst werden - so bitte nicht, mich zu groß verbindet, Closed-Source-Bibliotheken

Hat jemand über etwas kommen, die den Trick tun könnten, oder verstehen, das JPEG-Dateiformat (ich glaube, ich wahrscheinlich das JFIF-Dateiformat hier bedeuten), mir zu sagen, wie ich meine eigene Lösung zu rollen gehen könnte?

War es hilfreich?

Lösung

Sie haben diese C-Funktion , die die relevanten Daten für Sie extrahieren kann .

  

Dies ist eine Routine C sollte aber mit C ++ in Ordnung kompilieren.
  Direkt eine normale Datei-Pointer (von fopen) zu Beginn einer JPEG-Datei und zwei int Zeiger werden, um mit der Bildhöhe und Breite festgelegt.

Oder Sie können im Boost-rel="nofollow Bibliothek JPEG-Klasse, die die richtige Funktion (von Adobe hat Allgemeinbildbibliothek ).

jpeg_read_dimensions

boost::gil::jpeg_read_dimensions (const char *filename)
  

Gibt die Breite und Höhe der JPEG-Datei an der angegebenen Stelle. Wirft std :: ios_base :: Versagen, wenn die Lage entspricht nicht eine gültige JPEG-Datei.

Andere Tipps

libjpeg ist relativ klein, Open Source und auf OpenVMS. Es ist wahrscheinlich schneller zu installieren als selbst zu behandeln JPEG.

Vielleicht libjpeg ?

Sie sollten der Lage sein, diese jpeg lib mit diesem < a href = "http://nchrem.tnw.tudelft.nl/openvms/software2.html#Jpeglib" rel = "nofollow noreferrer"> Patch für OpenVMS

Keine Notwendigkeit einer vollständigen libjpeg Bibliothek nur diese Informationen zu erhalten (es sei denn, Sie etwas anderes mit den Bildern tun müssen). Imageinfo könnte Ihnen helfen. Es ist eine Java-Klasse, aber es gibt Anschlüsse für andere Sprachen, darunter C ++.
Wie bereits ausgeführt, Exif könnten diese Informationen ändern (zB. Mit Orientierungseinstellung).

Sie möchten GDAL Bibliothek, um zu versuchen, die für große Anzahl von Rasterdatenformate als Abstraktionsschicht dient, meist in GIS-Applikationen für GIS / RS verwendet.

GDAL bietet Anzahl von APIs für C, C ++ und Skriptsprachen. Natürlich unterstützt JPEG Bilder und seine Varianten wie JPEG2000 und vieles mehr.

Hier ist ein sehr einfaches Beispiel, wie JPEG-Bild zu öffnen und seine Dimensionen Abfrage:

#include <gdal_priv.h>

GDALAllRegister(); // call ones in your application

GDALDataset* ds = (GDALDataset*)GDALOpen("my.jpeg", GA_ReadOnly);
int width  = ds->GetRasterXSize();
int height = ds->GetRasterYSize(),
int nbands = ds->GetRasterCount();
Überprüfen

GDAL API Tutorial vollständigeres Beispiel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top