PHP code example of genaker / imageaibundle
1. Go to this page and download the library: Download genaker/imageaibundle library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
genaker / imageaibundle example snippets
use Genaker\ImageAIBundle\Api\ImageResizeServiceInterface;
class YourClass
{
private ImageResizeServiceInterface $imageResizeService;
public function __construct(ImageResizeServiceInterface $imageResizeService)
{
$this->imageResizeService = $imageResizeService;
}
public function resizeImage()
{
$params = [
'w' => 300,
'h' => 300,
'f' => 'webp',
'q' => 85
];
$result = $this->imageResizeService->resizeImage(
'catalog/product/image.jpg',
$params
);
// Access result properties
$filePath = $result->getFilePath();
$mimeType = $result->getMimeType();
$fromCache = $result->isFromCache();
}
}
$signature = md5($imagePath . '|' . $sortedParams . '|' . $salt);
namespace YourVendor\YourModule\Block;
use Genaker\ImageAIBundle\Service\ResizeUrlGenerationService;
use Magento\Framework\View\Element\Template;
class YourBlock extends Template
{
private ResizeUrlGenerationService $resizeUrlService;
public function __construct(
Template\Context $context,
ResizeUrlGenerationService $resizeUrlService,
array $data = []
) {
parent::__construct($context, $data);
$this->resizeUrlService = $resizeUrlService;
}
public function getResizedImageUrl(): string
{
$imagePath = 'catalog/product/image.jpg';
$params = ['w' => 400, 'h' => 400, 'f' => 'jpeg', 'q' => 85];
// Generate base64 URL (default, optimized for nginx)
return $this->resizeUrlService->generateUrl($imagePath, $params, true);
// Or generate regular URL
// return $this->resizeUrlService->generateUrl($imagePath, $params, false);
}
}
/** @var \Genaker\ImageAIBundle\Helper\ImageResizeUrl $helper */
$helper = $this->helper(\Genaker\ImageAIBundle\Helper\ImageResizeUrl::class);
// Generate base64 URL (default)
$resizeUrl = $helper->getResizeUrl('catalog/product/image.jpg', ['w' => 400, 'h' => 400]);
// Generate regular URL
$regularUrl = $helper->getRegularUrl('catalog/product/image.jpg', ['w' => 400, 'h' => 400]);
// Generate base64 URL explicitly
$base64Url = $helper->getBase64Url('catalog/product/image.jpg', ['w' => 400, 'h' => 400]);
use Genaker\ImageAIBundle\Helper\ImageResizeUrl;
class YourClass
{
private ImageResizeUrl $resizeUrlHelper;
public function __construct(ImageResizeUrl $resizeUrlHelper)
{
$this->resizeUrlHelper = $resizeUrlHelper;
}
public function getImageUrl(): string
{
return $this->resizeUrlHelper->getResizeUrl('catalog/product/image.jpg', ['w' => 300]);
}
}
/** @var \Genaker\ImageAIBundle\ViewModel\ResizeUrl $resizeUrlViewModel */
$resizeUrlViewModel = $block->getData('resizeUrlViewModel');
// Generate base64 URL (default)
$resizeUrl = $resizeUrlViewModel->getResizeUrl('catalog/product/image.jpg', [
'w' => 400,
'h' => 400,
'f' => 'jpeg',
'q' => 85
]);
// Or use specific methods
$base64Url = $resizeUrlViewModel->getBase64Url('catalog/product/image.jpg', ['w' => 300]);
$regularUrl = $resizeUrlViewModel->getRegularUrl('catalog/product/image.jpg', ['w' => 300]);
namespace YourVendor\YourModule\Block;
use Genaker\ImageAIBundle\ViewModel\ResizeUrl;
use Magento\Framework\View\Element\Template;
class YourBlock extends Template
{
private ResizeUrl $resizeUrlViewModel;
public function __construct(
Template\Context $context,
ResizeUrl $resizeUrlViewModel,
array $data = []
) {
parent::__construct($context, $data);
$this->resizeUrlViewModel = $resizeUrlViewModel;
}
public function getResizeUrlViewModel(): ResizeUrl
{
return $this->resizeUrlViewModel;
}
}
/** @var \YourVendor\YourModule\Block\YourBlock $block */
$resizeUrl = $block->getResizeUrlViewModel()->getResizeUrl('catalog/product/image.jpg', ['w' => 400]);
$url = $service->generateUrl('catalog/product/image.jpg', ['w' => 400, 'h' => 400]);
// Returns: https://your-domain.com/media/resize/{base64}.jpeg
$url = $service->generateUrl('catalog/product/image.jpg', ['w' => 500, 'h' => 500, 'q' => 90]);
$url = $service->generateUrl('catalog/product/image.jpg', ['w' => 300, 'h' => 300, 'f' => 'webp']);
// Returns: https://your-domain.com/media/resize/{base64}.webp
$url = $service->generateUrl('catalog/product/image.jpg', ['w' => 400, 'h' => 400], false);
// Returns: https://your-domain.com/media/resize/ip/catalog/product/image.jpg?w=400&h=400&f=jpeg
$url = $service->generateBase64Url('catalog/product/image.jpg', ['w' => 400], false);
// Returns: /media/resize/{base64}.jpeg
// Via ObjectManager (not recommended, use dependency injection)
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$service = $objectManager->get(\Genaker\ImageAIBundle\Service\ResizeUrlGenerationService::class);
$bootstrap = Bootstrap::create(BP, $_SERVER);
$app = $bootstrap->createApplication(Http::class);
return $bootstrap->run($app);
/resize/ip/catalog/product/image.jpg?w=300&h=300&f=webp&q=85
bash
cd vendor/genaker/imageaibundle/pygento
pip install -r bash
pip install -r vendor/genaker/imageaibundle/pygento/xml
<type name="Magento\MediaStorage\App\Media">
<plugin name="genaker_imageaibundle_media_plugin"
type="Genaker\ImageAIBundle\Plugin\MediaStorage\App\MediaPlugin"
sortOrder="1"/>
</type>
bash
vendor/bin/phpunit vendor/genaker/imageaibundle/app/code/Genaker/ImageAIBundle/Test/Integration/Controller/Resize/IpCurlTest.php
app/code/Genaker/ImageAIBundle/
├── Api/
│ └── ImageResizeServiceInterface.php
├── Controller/
│ ├── Resize/
│ │ └── Index.php
│ └── Adminhtml/
│ └── Generate/
│ └── Index.php
├── Model/
│ └── ResizeResult.php
├── Service/
│ └── ImageResizeService.php
└── etc/
├── module.xml
├── config.xml
├── system.xml
├── di.xml
├── acl.xml
├── frontend/
│ └── routes.xml
└── adminhtml/
└── routes.xml