Преобразование BMP в JPG в PHP - PullRequest
0 голосов
/ 31 июля 2011

На сайте, который я разрабатываю, мне нужно иметь возможность передавать все мои изображения с помощью imagejpeg (), поэтому я решил (так как мой сайт принимает только загрузки в формате JPG, BMP + PNG) просто конвертировать BMP и PNG в JPGfirst.

Теперь для преобразования BMP я использовал скрипт, найденный здесь: http://forums.codewalkers.com/php-coding-7/how-to-convert-bmp-to-jpg-879135.html

Скрипт отлично работает, когда я пропускаю через него обычный BMP.

Теперь,У меня был PNG, который у меня были проблемы с преобразованием с помощью imagecreatefrompng (), и через некоторое время я понял, что это изображение типа mime / x-ms-bmp ....

Я попытался передать изображение черезСценарий BMP, но я получаю следующую ошибку:

Предупреждение: imagecreatefromgd () [function.imagecreatefromgd]: 'C: \ Users \ Tom \ AppData \ Local \ Temp \ GD50C1.tmp' не являетсядействительный файл GD в C: \ xampp \ htdocs \ test \ cropimage \ FCreateImageFromBMP.php в строке 10

Если кто-то сталкивался с этим раньше, пожалуйста, помогите.Если вам нужно увидеть какой-либо код, просто дайте мне знать.

Заранее спасибо, Том.

Редактировать: Может быть полезно упомянуть строку, на которой происходит ошибка (начиная сссылка выше) и вот этот:

$tmp_name = tempnam("/tmp", "GD");

1 Ответ

1 голос
/ 31 июля 2011

Код, на который вы ссылаетесь, выходит из строя, если несколько предварительных условий терпят неудачу:

if(!($src_f = fopen($src, "rb"))) { 
...
if(!($dest_f = fopen($dest, "wb"))) { 
...
if($type != 0x4D42) { // signature "BM" 

Таким образом, если исходные файлы и файлы tmp доступны для чтения / записи, это выглядит как файл, который вы даете (отправляется как .png, но дает тип MIMP BMP) на самом деле также не файл BMP, потому что содержимое файла не начинается с идентификатора "BM".Если вы прикрепите файл, возможно, кто-нибудь сможет определить, что это на самом деле.

Другое решение, которое я использовал для решения этой проблемы, - это использовать команду преобразования ImageMagick для преобразования большинства типов файлов, какими бы они ни были, в желаемыйформат:

// convert uses the file extension to determine the output format, so
// change .jpg to whatever you'd like
$tmp_name = tempnam("/tmp", "convert") . '.jpg';
exec('c:\path\to\imagemagick\convert ' . $inputFile . ' ' . $tmp_name);

Вы можете получить ImageMagick для Windows и других платформ здесь: http://www.imagemagick.org/script/binary-releases.php

...