Image Optimizer for XF 2.0

Image Optimizer for XF 2.0 [Paid] 2.1.8

No permission to buy ($29.00)
What does his do exactly.
If you have the image proxy active, all images will be stored exactly like the originals.
So, if someone inserts and image with 2000 x 2000, your visitors will see this exactly dimension.
With these news options you can resize the image and optimize it for better performance.
 
Last edited:
I am getting the server error.
Code:
ErrorException: [tl] Image Optimizer: Failed to optimize image. $path=/home/admin/public_html/community/internal_data/temp/xfkxnKLb, $command=/home/admin/public_html/community/src/addons/Truonglv/ImageOptimizer/pngquant -f --quality '60-80' --speed '5' --output '/home/admin/public_html/community/internal_data/temp/xfCTBmTS' '/home/admin/public_html/community/internal_data/temp/xfkxnKLb' $output=array ( ) $newSize=0 src/XF/Error.php:75
Generated by: Unknown account Jan 24, 2019 at 1:11 PM
Stack trace
#0 src/XF.php(189): XF\Error->logError('[tl] Image Opti...', false)
#1 src/addons/Truonglv/ImageOptimizer/Images/AbstractImage.php(55): XF::logError('[tl] Image Opti...')
#2 src/addons/Truonglv/ImageOptimizer/Job/Optimizer.php(140): Truonglv\ImageOptimizer\Images\AbstractImage->optimize('/home/admin/pub...')
#3 src/addons/Truonglv/ImageOptimizer/Job/Optimizer.php(84): Truonglv\ImageOptimizer\Job\Optimizer->optimizeImageFile('data://avatars/...')
#4 src/addons/Truonglv/ImageOptimizer/Job/Optimizer.php(51): Truonglv\ImageOptimizer\Job\Optimizer->processImages(Array, 'avatar', Object(XF\Timer), 1548353270)
#5 src/XF/Job/Manager.php(253): Truonglv\ImageOptimizer\Job\Optimizer->run(G)
#6 src/XF/Job/Manager.php(195): XF\Job\Manager->runJobInternal(Array, G)
#7 src/XF/Job/Manager.php(79): XF\Job\Manager->runJobEntry(Array, G)
#8 job.php(42): XF\Job\Manager->runQueue(false, 8)
#9 {main}
Request state
array(4) {
  ["url"] => string(18) "/community/job.php"
  ["referrer"] => string(98) "https://sphynxlair.com/community/threads/picking-up-my-first-sphynx-at-the-end-of-the-month.45029/"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(0) {
  }
}
Delete
 
I am getting the server error.
Code:
ErrorException: [tl] Image Optimizer: Failed to optimize image. $path=/home/admin/public_html/community/internal_data/temp/xfkxnKLb, $command=/home/admin/public_html/community/src/addons/Truonglv/ImageOptimizer/pngquant -f --quality '60-80' --speed '5' --output '/home/admin/public_html/community/internal_data/temp/xfCTBmTS' '/home/admin/public_html/community/internal_data/temp/xfkxnKLb' $output=array ( ) $newSize=0 src/XF/Error.php:75
Generated by: Unknown account Jan 24, 2019 at 1:11 PM
Stack trace
#0 src/XF.php(189): XF\Error->logError('[tl] Image Opti...', false)
#1 src/addons/Truonglv/ImageOptimizer/Images/AbstractImage.php(55): XF::logError('[tl] Image Opti...')
#2 src/addons/Truonglv/ImageOptimizer/Job/Optimizer.php(140): Truonglv\ImageOptimizer\Images\AbstractImage->optimize('/home/admin/pub...')
#3 src/addons/Truonglv/ImageOptimizer/Job/Optimizer.php(84): Truonglv\ImageOptimizer\Job\Optimizer->optimizeImageFile('data://avatars/...')
#4 src/addons/Truonglv/ImageOptimizer/Job/Optimizer.php(51): Truonglv\ImageOptimizer\Job\Optimizer->processImages(Array, 'avatar', Object(XF\Timer), 1548353270)
#5 src/XF/Job/Manager.php(253): Truonglv\ImageOptimizer\Job\Optimizer->run(G)
#6 src/XF/Job/Manager.php(195): XF\Job\Manager->runJobInternal(Array, G)
#7 src/XF/Job/Manager.php(79): XF\Job\Manager->runJobEntry(Array, G)
#8 job.php(42): XF\Job\Manager->runQueue(false, 8)
#9 {main}
Request state
array(4) {
  ["url"] => string(18) "/community/job.php"
  ["referrer"] => string(98) "https://sphynxlair.com/community/threads/picking-up-my-first-sphynx-at-the-end-of-the-month.45029/"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(0) {
  }
}
Delete
Any suggestion here @truonglv?
 
Hi @truonglv just upgrade to XF 2.1 and I get tl_image_optimizer_log doesn't exist error.
What should I do?

Edit:

Should I just rename xf_image_optimizer_log to tl_image_optimizer_log and delete file_group, optimized_state and content_date fields?
The field content_type if varbinary but now is varchar. How do I convert this field?
 
Last edited:
Hi @truonglv just upgrade to XF 2.1 and I get tl_image_optimizer_log doesn't exist error.
What should I do?

Edit:

Should I just rename xf_image_optimizer_log to tl_image_optimizer_log and delete file_group, optimized_state and content_date fields?
The field content_type if varbinary but now is varchar. How do I convert this field?
Please follow this guide:

 
Hi @truonglv

Reading the code, I can't run the first query .. I'll loose all existent data!
What about converting content_type from varbinary to varchar?

Thanks

Code:
DROP TABLE IF EXISTS `xf_image_optimizer_log`
RENAME TABLE `xf_image_optimizer_log` TO `tl_image_optimizer_log`
ALTER TABLE `tl_image_optimizer_log` DROP COLUMN `file_group`
ALTER TABLE `tl_image_optimizer_log` DROP COLUMN `content_date`
ALTER TABLE `tl_image_optimizer_log` DROP INDEX `content_group`
ALTER TABLE `tl_image_optimizer_log`  ADD COLUMN `processed_time` FLOAT NOT NULL DEFAULT \'0\'
 
Hi @truonglv

Reading the code, I can't run the first query .. I'll loose all existent data!
What about converting content_type from varbinary to varchar?

Thanks

Code:
DROP TABLE IF EXISTS `xf_image_optimizer_log`
RENAME TABLE `xf_image_optimizer_log` TO `tl_image_optimizer_log`
ALTER TABLE `tl_image_optimizer_log` DROP COLUMN `file_group`
ALTER TABLE `tl_image_optimizer_log` DROP COLUMN `content_date`
ALTER TABLE `tl_image_optimizer_log` DROP INDEX `content_group`
ALTER TABLE `tl_image_optimizer_log`  ADD COLUMN `processed_time` FLOAT NOT NULL DEFAULT \'0\'
That does not make your data loss.
What about converting content_type from varbinary to varchar?
That does not matter. Varchar or varbinary are fine.
 
Hi

I compared the two tables and for my case it needs some more changes.
I cant "DROP TABLE IF EXISTS xf_image_optimizer_log" I'll lost all data.

SQL:
RENAME TABLE xf_image_optimizer_log TO tl_image_optimizer_log;

ALTER TABLE tl_image_optimizer_log
    DROP INDEX content_group,
    DROP INDEX log_date,
    DROP INDEX content_date,
    DROP INDEX content;

ALTER TABLE tl_image_optimizer_log ADD COLUMN new_content_type varchar(25) NOT NULL;
UPDATE tl_image_optimizer_log SET new_content_type = CONVERT(content_type, varchar(25)) WHERE log_id=log_id;

ALTER TABLE tl_image_optimizer_log
    DROP COLUMN content_type,
    CHANGE new_content_type content_type VARCHAR(25) NOT NULL;

ALTER TABLE tl_image_optimizer_log
    DROP COLUMN file_group,
    DROP COLUMN optimized_state,
    DROP COLUMN content_date,
    ADD COLUMN processed_time float unsigned NOT NULL DEFAULT 0;

ALTER TABLE tl_image_optimizer_log
    CHANGE content_type content_type varchar(25) NOT NULL AFTER content_id,
    CHANGE old_size old_size int(10) unsigned NOT NULL DEFAULT 0 AFTER content_type,
    CHANGE new_size new_size int(10) unsigned NOT NULL DEFAULT 0 AFTER old_size,
    CHANGE log_date log_date int(10) unsigned NOT NULL DEFAULT 0 AFTER processed_time;

ALTER TABLE tl_image_optimizer_log
    ADD INDEX content (content_id, content_type);

UPDATE tl_image_optimizer_log
    SET content_type = 'attachment_data'
    WHERE content_type = 'attachment';

The only difference is the "content" index that is UNIQUE in the new version and I have duplicated values, so it need to be just INDEX.
Regarding the content_type, in previous version you add "attachment" and now it's "attachment_data"
The column order it's optional!
 
Last edited:
Top Bottom