Payments are experiencing issues due to temporary restrictions in Russia. If your payment does not go through, please submit a support request.Our support team is available 24/7 — we are always here to help with hosting and server issues.We are now accepting requests for dedicated server rental and colocation services in our data center.Reminder: we recommend enabling backups for additional data protection.A new VPS/VDS lineup with NVMe storage and improved performance is now available.Maintenance work on some servers has been completed. All services are operating normally.

MODULE FOR 1C-BITRIX

Vintra

Layered Image Generator

The module assembles images from layers with live preview, inserts data from information blocks, applies PHP transformations, and saves the result to the product card or an information block property for further use on marketplaces, advertising systems, and other services.

Technical details

Published
08.05.2026
Updated
01.09.2026
Version
1.1.9
Installed
Less than 50 times
Responsiveness
No
Composite support
Yes
Compatible with Sites24
No
Developer
Vintra

What this solution does

The module assembles images from layers with live preview, inserts data from information blocks, applies PHP transformations, and saves the result to the product card or an information block property for further use on marketplaces, advertising systems, and other services.

Each marketplace has specific image requirements: Ozon requires a white background with characteristic text, Wildberries needs infographics highlighting benefits, and Yandex.Market demands clean photos with branding. Manually processing a large catalog in graphic editors is time-consuming and resource-intensive.

The module automates this process: a template is configured once within the Bitrix admin panel, after which the system generates images for all products by automatically inserting the name, characteristics, and detailed photos.

The visual template editor allows creating a layout in minutes without programming skills. Users can add layers, reorder them, and disable unnecessary elements.

Instant preview displays the result in real time directly within the layer editor, without leaving the admin panel.

Layer-based image generation module for marketplaces. Includes built-in size presets for Ozon (700×933), Wildberries (900×1200), Yandex.Market (1040×1440), and Avito (1280×960), plus the ability to set custom dimensions.

Supports seven layer types: background, local image, detailed product photo, image from a property, static text, text from an infoblock property, and PHP expression. Conditional logic allows layers to display based on specific property values; for instance, a 'Hit' badge appears only for products with the 'bestseller' property.

The built-in background removal algorithm uses per-channel RGB tolerance and edge smoothing to remove up to two colors simultaneously. Region masking is available to hide rectangular areas on detailed photos.

Automated generation is configured via a scheduler with intervals (hourly, daily, weekly), executed by a Bitrix agent via standard cron.

Flexible filtering is available for both manual generation and the scheduler. Options include generating images only for products without existing images or regenerating all items. Filters can be applied by section, name, ID, and property values using AND/OR logic.

The module allows applying PHP functions or expressions to transform values in the 'Text from property' layer before output, such as mb_strtoupper.

The interface uses standard Bitrix language files, with Russian included by default.

During installation, the module creates its own database tables without modifying standard Bitrix tables. All created tables are removed upon module uninstallation.

Version 1.1.0 introduces drag-and-drop layer positioning directly on the image preview. X/Y coordinates are recalculated automatically, and a blue border displays the actual layer size.

Custom canvas sizes are now supported. In addition to standard templates for Ozon, WB, Yandex.Market, and Avito, any dimensions can be set manually.

A new 'Generation Tasks' section enables scheduled automatic execution via a Bitrix agent. Features include flexible element filtering, interval configuration, and agent management directly from the task card.

Info blocks and 'File' type properties can be created from the template form in a single click without navigating to Bitrix settings.

The module saves generated image results directly to the standard DETAIL_PICTURE field without creating additional custom properties. A settings page includes an 'Allow PHP layers' option, which is disabled by default. The Arial font is included in the package to ensure correct text rendering, allowing the module to be used immediately after installation.

After installation via the 'Solution Installation' interface, a new 'Image Generator' section with a 'Templates' subsection appears in the menu. To create an image, select the marketplace, the product information block, and the target property for saving results. The process involves layering: background, product detail photo, price text, and a promotional badge. Clicking 'Generate' processes all products in the block and automatically saves the resulting images.

System requirements:

PHP version 8.0 or higher.

GD extension with TrueType/FreeType support for text layers.

Bitrix CMS version 20.0 or higher.

An information block containing a file property for storing results.

When needed, General iT can implement “Layered Image Generator”, configure the module and verify it against the current website setup.

UPDATE HISTORY

What’s new

5 releases
1.1.9 (01.09.2026)Latest update

The module can no longer crash a neighboring Wintra module. The demo-mode notice class had the generic name 'WintraTrialNotice' — the same as in our other modules. If another such class was present nearby, it was declared a second time, causing the site to crash with a fatal error; the crash affected the neighbor, not the culprit. Thus, on 22.08.2026, a client's site displayed a blank page. The class has been renamed to 'WintraImgGenTrialNotice'.

The Bitrix site check no longer complains about the module's tables. The table encoding was hardcoded in the code, and on a base with a different encoding, the standard 'Table Encoding in DB' check would return an error. Now the module does not specify an encoding at all and uses the one set for the database; existing tables are converted to it upon update.

Counting elements and listing property values require a one-time token. Previously, these two endpoints only checked for administrator rights. This is insufficient: a request forged from another page carries the administrator's cookies and passes the check — meaning an external site could force our system to iterate through an information block. Other module endpoints have required a token for a long time; these two were the only ones without it.

The last module endpoint without a demo-mode check has been closed. The property value list was read via information blocks and did not require the module's classes — which is why the demo-mode check was absent. After the demonstration period ended, the endpoint responded as if the module were functioning.

Two files that no one opened have been removed from the distribution. 'js/admin.min.js' was a second copy of 'js/admin.js' and was not included by any page — and a second copy of the same logic does not remain identical; it silently diverges. 'lib/menu-helper.php' remained on disk from version 1.1.7. Both are removed from already installed sites as well.

Removed a dead fallback block from eleven pages. It included 'include.php' if classes failed to load. This was never a protection: in the marketplace build, 'include.php' is a protective file that returns a denial upon demo expiration before class declarations, and it never executes again. This block was mistakenly read as a working safety measure.

1.1.8 (17.08.2026)

After the demo period ends, module pages no longer crash with an error. Previously, 'Generation', 'Template', 'Layer', and 'Task' opened as a blank screen with a message like 'Class "LocalImagegenTemplate" not found': the page accessed the module without verifying it was loaded. Now, a standard banner displaying the reason and an activation link appears in their place, just as it already worked on 'Templates', 'Tasks', and 'Settings' pages. All fourteen module pages have been verified.

Background page requests now respond clearly instead of remaining silent. Element counting, preview, generation of a single element, saving a task, and creating an information block or property after demo expiration previously returned a server error. Now they return the text 'Module demo period has expired'.

1.1.7 (14.08.2026)

The output image format is set per template. In version 1.1.6, a single format was selected for the entire module, but typically a catalog requires PNG for one marketplace and WebP for another. Now, the format and quality are selected on the template page, while the module setting remains as the default value for templates where no format is chosen. Existing templates continue to work as before after the update.

Text-to-layer conversion is applied again. The 'PHP transformation' field promises two options — a function name or an expression with the $value variable — but since version 1.1.5, only the first worked: expressions like mb_strtoupper($value, 'UTF-8') were silently skipped, and the text was displayed unchanged. Now both options work. The list of allowed functions has been extended to include mb_strtoupper and mb_strtolower: the standard strtoupper and strtolower do not change Cyrillic characters, which previously left Russian names in their original case.

Labels in the interface no longer appear as '?' or diamonds. The previous version removed Russian text from the code but not the symbols: long dashes, «guillemets», and ellipses in the page code broke on UTF-8 sites in the same way. As a result, the result property was displayed as «ozon_file ? Image OZON», and an empty last run date appeared as a single diamond. All module pages have been checked: no characters outside language files remain.

The layer display condition now supports more than just 'equals'. Added options: 'not equal', 'one of' (comma-separated list), 'filled', and 'not filled'. Previously, a separate layer had to be created for each case. Layers configured earlier continue to work without changes.

New substitutions: year, date, and list value text. {{YEAR}}, {{YEAR_PREV}}, {{YEAR_NEXT}}, {{DATE}}, {{MONTH}}, {{DAY}} — to place the year on the image, computed layers are no longer needed. {{season.TEXT}} outputs the list value label, while {{season}} still provides its code.

The module icon in the menu no longer depends on neighboring solutions. The class that renders the 'Vintra.Hub' section had the same name across several of our modules, so on a site with multiple solutions, the icon was rendered by whichever module loaded first.

1.1.6 (14.08.2026)

Computed layers are back — now without executing code. In version 1.1.5, the «PHP expression» layer was reduced to value substitution, and labels that were assembled from multiple properties or depended on conditions stopped working. Now the expression is parsed by the module itself and evaluated using an allowed list of functions: concatenation, arithmetic, comparisons, the «a ? b : c» conditional, access to element properties and fields, and functions for strings, numbers, and dates. Since the expression is not executed as server-side code, the configuration remains safe. Previous expressions work exactly as before — no need to rewrite them.

The «Allow PHP layers» setting again controls behavior. In 1.1.5 the checkbox remained in the interface but had no effect: the module did not read it. Now it enables expression evaluation and has a clearer name — «Allow computed expressions in layers». Substitutions of the «{{NAME}}» type always work, regardless of this setting.

The output image format can be chosen: PNG, JPEG, or WebP. Previously, the result was always saved as PNG and weighed around half a megabyte per product. JPEG and WebP provide the same appearance with files 5–10 times smaller — for a catalog of twenty thousand items, this is a difference of gigabytes. Quality can be adjusted nearby. Only formats that PHP can encode on your hosting are shown in the list.

The default Ozon canvas size has been corrected to 900×1200. It was previously 700×933 — smaller than the marketplace requires.

Labels in the interface no longer turn into «?????». On sites using UTF-8 encoding, question marks were displayed for the condition block on generation and task pages («Group», «Between properties», «AND», «OR», «delete group», «property»), generation log messages, image and font loading errors, mask field labels, and the demo mode badge. All of these have been moved to language files.

Transliteration of the name into symbolic code now works on UTF-8 sites. The letter translation table was stored in the page source using Cyrillic characters, and after archiving, it no longer matched the user input: the code was silently not inserted.

Unified menu icon. The module in the 'Vintra.Hub' section now uses the same icon as other Vintra solutions.

1.1.5 (11.08.2026)

The demonstration mode is visible in the module. A standard Bitrix banner with a countdown has appeared on the module pages: 'Module demonstration mode. Days remaining: N' with a link to purchase. After the demo period ends, the pages display the reason and a link to activate instead of an empty page.

Request forgery protection. Creating, copying, and deleting templates; creating, copying, and deleting layers; saving templates; deleting schedules and switching their activity and cron agent; starting generation; previewing; creating information blocks and properties; saving tasks and settings — all now require a one-time session token. Generation launch has been moved from the address bar to a POST request.

PHP expressions in layers have been replaced with value substitution. The 'PHP expression' layer executed the field content as server-side code. Now the field understands substitutions like '{{NAME}}', '{{ID}}', '{{ARTNUMBER}}' — the field or element property name in double curly braces. The list of text transformations is limited to safe functions; the 'Allow PHP layers' setting is no longer needed. If PHP expressions were used in layers, rewrite them as substitutions after updating.

Uploaded image validation. Layer backgrounds and images are checked on the server by extension and actual content: only PNG and JPEG are accepted. A script execution ban is created in upload folders, including on already installed sites.

The solution name, developer, and version are displayed correctly. Previously, the solution name and developer name were written in Russian in the code and appeared as question marks on sites using UTF-8 encoding, and the version number was hardcoded as a number and did not change during updates. All this is now taken from the language file and the version file.

The module is in the general 'Vintrahub' section. The menu item has moved from 'Services' to the general section alongside other Vintra modules, with an icon. On already installed sites, the move occurs during the update.

Update reliability. Updaters for previous versions have been removed from the distribution, and the updater no longer connects the module during file copying — this previously caused update installation to hang.

Security and encoding. Technical details of errors are not displayed externally — a generalized message is shown. Arrows, crosses, and checkmarks are styled to prevent distortion on UTF-8 websites.

YOUR PROJECT INFRASTRUCTURE

A home for your website

BEFORE YOU ORDER

Let’s go through the details.

What does the price cover?
The displayed price covers the solution itself. Platform licensing, installation and customisation are checked separately. If the page offers bundles, select the required option before submitting a request.
How do I check compatibility?
Compare the supported editions and solution version in the technical details with your project. Before installing on a live website, we recommend making a backup and checking the solution in a test environment.
Is there a trial?
The developer lists a trial of 7 days. The trial button opens the installer in your website control panel. Check the required features and compatibility before purchasing.
How much does this solution’s renewal cost?
The current renewal price is 7,450 ₽. Before you order, a manager will confirm the renewal period and whether it applies to your licence.
Can you help with implementation?
We can help install the module, check its settings and verify how it works in your project. Compatibility with other customisations and the scope of work are assessed before we begin.

GENERAL iT

Let’s discuss your project

Получатель: ООО «Дженерал Ай Ти Рус»

1C-BITRIX

Install solution

Enter a domain with or without https://. The installer will open in your website control panel in a new tab.

Solution screenshots

Solution screenshot