Я использую phalcon php framework. У меня есть блог в моем приложении, где пользователь может отправить изображение, прикрепленное к его сообщению в блоге, и оно отображается при просмотре сообщения. Я хочу отобразить это изображение на индексной странице блога, где перечислены все сообщения, однако я хочу, чтобы это уменьшилось, чтобы уменьшить его размер. Я смог использовать imagick для сохранения эскиза в каталоге и загрузки эскиза оттуда, однако мне нужно избегать сохранения миниатюры и генерировать эскизы каждый раз только для их отображения. Вот код, который я использовал для создания изображения с ImagickКак отобразить изображение, созданное imagick php в html-представлении?
public function thumbnail($img)
{
$maxsize = 100;
$image = new Imagick($img);
// Resizes to whichever is larger, width or height
if($image->getImageHeight() <= $image->getImageWidth())
{
$image->resizeImage($maxsize,0,Imagick::FILTER_LANCZOS,1);
}
else
{
$image->resizeImage(0,$maxsize,Imagick::FILTER_LANCZOS,1);
}
// Set to use jpeg compression
$image->setImageCompression(Imagick::COMPRESSION_JPEG);
// Set compression level (1 lowest quality, 100 highest quality)
$image->setImageCompressionQuality(75);
// Strip out unneeded meta data
$image->stripImage();
// Writes resultant image to output directory
$image->writeImage($uploaddir.'/thumbs/'. basename($_FILES['photo']['name']));
// Destroys Imagick object, freeing allocated resources in the process
$image->destroy();
}
Я попытался удалить только две последние строки, где сохранено изображение, а затем объект Imagick разрушается, но не может продолжаться, чтобы отобразить изображение в индексном представлении.
Кажется довольно глупо использовать здесь 'imagecreatefromjpeg' и' imagejpeg'. Вы уже _got_ данные, сохраненные в файле с именем 'file_name_to_save.jpg', так почему бы просто не прочитать его оттуда? И даже это, вероятно, не нужно - «Imagick :: __ toString» существует. – CBroe