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