Я бы посоветовал вам не делать этого из системы, как вы описали.
У PHP есть библиотеки для такого рода вещей.
http://www.php.net/manual/en/ref.image.php. http://php.net/manual/en/book.imagick.php.
И есть библиотеки, которые обертывают эти нативные функции для управления изображениями. https://imagine.readthedocs.org/en/latest/
Таким образом, весь ваш код находится в PHP, и вы не полагаетесь на систему, чтобы что-либо сделать (предоставление PHP было скомпилировано с использованием библиотек, как описано. Они являются стандартными библиотеками, доступными в большинстве сборников PHP, и вы можете их активировать если они не включены).
Редактировать: Я защищаю вас.
- Открыть исходное изображение.
- Преобразование исходного изображения,
- Возвращенный источник изображения
с IMAGINE вы могли бы сделать это таким образом:
$imagine = new Imagine\Gd\Imagine();
$size = new Imagine\Image\Box(400, 270);
$imagine->open('/path/to/large_image.jpg')
->resize($size)
->show('jpg');
Библиотеки PHP, такие как imagick, полагаются на систему. Хотя использование библиотек считается хорошей практикой, по моему опыту часто бывает более эффективным и практичным использование системных вызовов. Для чего OP пытается это сделать, гораздо эффективнее сделать это с помощью системного вызова. – Alasdair
Точно, Alsadair. Я также просто понял, что проект, который я хотел знать, будет перенесен из Linux в коробку Windoze. У меня нет контроля над развитием, поэтому это (к сожалению) не сработает. Если бы я использовал библиотеки PHP, могу ли я иметь поддержку с несколькими ОС? –
Как я уже сказал - до тех пор, пока вы имеете доступ к библиотекам, как описано. Я тоже перестраиваю платформу - и выполнение базовых системных вызовов не более переносимо, чем то, что я защищаю. GD доступен во всех версиях PHP. Никто не упомянул, что это должно быть самым эффективным решением. 95% временного кода не нужно оптимизировать по мере описания. Если вы беспокоитесь об оптимизации здесь, вы, вероятно, делаете что-то неправильно (например, оптимизируете где-то еще) – calumbrodie