Dla tych, którzy nie są w stanie zintegrować Imagine
właściwie jak ja ..
Znalazłem inne rozwiązanie WebinoImageThumb here, które działało idealnie dobrze ze mną.Oto małe wyjaśnienie, jeśli nie chcesz przeczytać pełną dokumentację:
Run: php composer.phar require webino/webino-image-thumb:dev-develop
i dodać WebinoImageThumb
jako aktywny moduł w config/application.config.php
co dodatkowo wygląda następująco:
<?php
return array(
// This should be an array of module namespaces used in the application.
'modules' => array(
'Application',
'WebinoImageThumb'
),
.. poniżej pozostaje ten sam
teraz w użytku działania regulatora to poprzez służbę lokalizator jak poniżej:
// at top on your controller
use Zend\Validator\File\Size;
use Zend\Validator\File\ImageSize;
use Zend\Validator\File\IsImage;
use Zend\Http\Request
// in action
$file = $request->getFiles();
$fileAdapter = new \Zend\File\Transfer\Adapter\Http();
$imageValidator = new IsImage();
if ($imageValidator->isValid($file['file_url']['tmp_name'])) {
$fileParts = explode('.', $file['file_url']['name']);
$filter = new \Zend\Filter\File\Rename(array(
"target" => "file/path/to/image." . $fileParts[1],
"randomize" => true,
));
try {
$filePath = $filter->filter($file['file_url'])['tmp_name'];
$thumbnailer = $this->getServiceLocator()
->get('WebinoImageThumb');
$thumb = $thumbnailer->create($filePath, $options = [], $plugins = []);
$thumb->adaptiveResize(540, 340)->save($filePath);
} catch (\Exception $e) {
return new ViewModel(array('form' => $form,
'file_errors' => array($e->getMessage())));
}
} else {
return new ViewModel(array('form' => $form,
'file_errors' => $imageValidator->getMessages()));
}
Powodzenia ... !!
Czy nie byłoby lepiej wstrzyknąć usługę obrazu (łatwiejsze wstrzykiwanie fałszywek do testowania itp.) Do kontrolera zamiast korzystania z lokalizatora usług w środku? –
Rzeczywiście. Z pewnością była to szybka i brudna wersja. Jestem silnym zwolennikiem silnego IOC (zobacz http://ocramius.github.com/blog/zf2-and-symfony-service-proxies-with-doctrine-proxies/) – Ocramius
@Ocramius Bardzo przydatna odpowiedź. Dzięki, sprawdzi to wdrożenie. – Prashant