2017-01-21 1 views
1

Ich konnte keinen Weg finden, TIFF-Byte-Array in JPEG-Byte-Array in PHP zu konvertieren. Ich habe folgendes versucht:Konvertieren von TIFF-Byte-Array in JPEG-Byte-Array in PHP

$im = imagecreatefromstring("49 49 2a 00 16 1d 00 00 80 3f e0 4f f0 04 16 0d II.........O....07 84 42 61 50 b8 64 36 1d 0f 88 44 62 51 38 a4 ..BaP.d6...DbQ8.56 2d 17 8c 46 63 51 b8 e4 76 3d 1f 90 48 64 52 V...FcQ..v...HdR 
39 24 96 4d 27 94 4a 65 52 b9 64 b6 5d 2f 90 c0 9..M..JeR.d....."); 

aber es gibt Data is not recognized format zurück.

Also, wie konvertiere ich TIFF-Bytes in JPEG-Bytes?

+0

Wie erhalten Sie das "Byte-Array"? –

+0

Ich verwende Aufruf wsdl SoapClient() -Methode. –

+0

Ist es eine hexadezimierte Folge von durch Leerzeichen getrennten Bytes? Ich frage mich, was die Charaktere "II", "M", "JeR" bedeuten. –

Antwort

2

Die GD-Erweiterung unterstützt derzeit das Laden von TIFF-Bildern nicht. Sie können Imagick Erweiterung verwenden stattdessen:

try { 
    $im = new Imagick(); 
    $im->readImageBlob($tiff_bytes); 
    $im->setFormat('JPEG'); 
    file_put_contents('test.jpeg', $im->getImageBlob()); 
} catch (Exception $e) { 
    trigger_error($e->getMessage(), E_USER_ERROR); 
} 

In dem obigen Code ist $tiff_bytes eine binäre Zeichenfolge eines TIFF-Bildes.

Alternativ können Sie die official command line tools, speichern Sie das TIFF-Bild installieren, auf Dateisystem und es zu JPEG konvertieren mit dem folgenden Befehl:

convert file.jpg file.tiff 

Es gibt eine Reihe von Möglichkeiten, um einen Shell-Befehl in PHP auszuführen. Ich bevorzuge exec() für die Fälle, in denen ich nicht viel Kontrolle über die Ausführung brauche, und proc_open(), wenn ich die volle Kontrolle über den Inhalt der Dateideskriptoren benötige, d.h. in den meisten Fällen.

+0

Ich versuche, oben genannten Code zu verwenden, aber ich bekomme Fehler: - Schwerwiegender Fehler: Klasse 'Imagick' nicht gefunden. Ich habe auch php_imagick.dll Datei in php.ini –

+1

@SoftwareEngineer registriert, die Erweiterung ist aus irgendeinem Grund nicht geladen. Sehen Sie sich die Ausgabe von 'phpinfo();' an, wenn Sie ein Web-SAPI ausführen, oder an der Ausgabe von 'php -m' (Liste der geladenen Module) in CLI. Hast du die PECL-Erweiterung installiert (http://php.net/manual/en/imagick.installation.php)? Befindet sich die Bibliothek im Erweiterungsverzeichnis ('extension_dir' in _php.ini_)? –

+1

Sie müssen das Imagick-Modul installieren, wenn es nicht bereits installiert ist. Einmal installiert, PHP neu starten und es wird existieren :) – Martin