Jump to content

Recommended Posts

2 минуты назад, get31 сказал:

в линии 38 у меня как раз:



$info = getimagesize($resized_filename);

но папка точно есть, т.к без добавления webp все работает

Дальше смотрим в api/Design.php, api/Image.php и в .htaccess, где конфликт resized_filename

Edited by alexivchenko
Link to post
Share on other sites
  • Replies 56
  • Created
  • Last Reply

Top Posters In This Topic

30 минут назад, alexivchenko сказал:

Дальше смотрим в api/Design.php, api/Image.php и в .htaccess, где конфликт resized_filename

 

У меня стоит вот так:

Design.php

  public function resize_modifier($filename, $width=0, $height=0, $set_watermark=false)
  {
    $resized_filename = $this->image->add_resize_params($filename, $width, $height, $set_watermark);
    $resized_filename_encoded = $resized_filename;
    
    $size = ($width?$width:0).'x'.($height?$height:0).($set_watermark?"w":'');
      $image_sizes = array();
      if($this->settings->image_sizes)
        $image_sizes = explode('|',$this->settings->image_sizes);
      if(!in_array($size, $image_sizes)){
        $image_sizes[] = $size;
        $this->settings->image_sizes = implode('|',$image_sizes);
      }
    
    if(substr($resized_filename_encoded, 0, 7) == 'http://')
      $resized_filename_encoded = rawurlencode($resized_filename_encoded);

    $resized_filename_encoded = rawurlencode($resized_filename_encoded);

    return $this->config->root_url.'/'.$this->config->resized_images_dir.$resized_filename_encoded/*.'?'.$this->config->token($resized_filename)*/;
  }

Image.php

  public function add_resize_params($filename, $width=0, $height=0, $set_watermark=false)
  {
    if('.' != ($dirname = pathinfo($filename,  PATHINFO_DIRNAME)))
      $file = $dirname.'/'.pathinfo($filename, PATHINFO_FILENAME);
    else
      $file = pathinfo($filename, PATHINFO_FILENAME);
    $ext = pathinfo($filename, PATHINFO_EXTENSION);
  
    if($width>0 || $height>0)
      $resized_filename = $file.'.'.($width>0?$width:'').'x'.($height>0?$height:'').($set_watermark?'w':'').'.'.$ext;
    else
      $resized_filename = $file.'.'.($set_watermark?'w.':'').$ext;
      
    return $resized_filename;
  }

.htaccess - resized_filename вообще нет

 

resize/resize.php

<?php
chdir('..');
require_once('api/Simpla.php');

$filename = $_GET['file'];
$token = $_GET['token'];

$filename = str_replace('%2F', '/', $filename);

//if(substr($filename, 0, 6) == 'http:/')
//  $filename = 'http://'.substr($filename, 6);

$simpla = new Simpla();

//if(!$simpla->config->check_token($filename, $token))
  //exit('bad token');    

$resized_filename =  $simpla->image->resize($filename);
//if(is_readable($resized_filename))
//  header('Location: '.$_SERVER['REQUEST_URI']);

if(is_readable($resized_filename))
{
  header('Content-type: image');
  print file_get_contents($resized_filename);
}


  
  

$webp_filename = preg_replace('/\.[^.]+$/','',$resized_filename).".webp";
$info = getimagesize($resized_filename);
if (file_exists($webp_filename)) {
} else {
  if ($info['mime'] == 'image/jpeg') {
    $imagetoconvert = imagecreatefromjpeg($resized_filename);  
    imagewebp($imagetoconvert, $webp_filename, 80);
    imagedestroy($resized_filename);
  } elseif ($info['mime'] == 'image/png') {
    $imagetoconvert = imagecreatefrompng($resized_filename);  
    imagewebp($imagetoconvert, $webp_filename, 80);
    imagedestroy($resized_filename);
  }
}

 

 

Edited by get31
Link to post
Share on other sites

Разобрался в чем была проблема

use_imagick = false;

 

Подскажите, а так и должно быть? Если фото не обработалось до webp, но в урле меняем формат на webp, отображается ошибка:

Fatal error: Uncaught exception 'ImagickException' with message 'unable to open image `/home/virtwww/site/http/files/originals/2_16.webp': No such file or directory @ error/blob.c/OpenBlob/2874' in /home/virtwww/site/http/api/Image.php:366 Stack trace: #0 /home/virtwww/site/http/api/Image.php(366): Imagick->readimage('/home/virtwww/w...') #1 /home/virtwww/site/http/api/Image.php(78): Image->image_constrain_imagick('/home/virtwww/w...', '/home/virtwww/w...', '527', '800', NULL, '50', '50', 0.8, 0.2) #2 /home/virtwww/site/http/resize/resize.php(24): Image->resize('2_16.527x800.we...') #3 {main} thrown in /home/virtwww/site/http/api/Image.php on line 366

 

Link to post
Share on other sites

Друзья, подскажите пожалуйста.

Работает, но после удаления файлов из папки products на некоторые товары ошибка

Warning: getimagesize(Z:\home\localhost\www\site/files/products/591970VCQR1-3458.450x600.webp) [function.getimagesize]: failed to open stream: No such file or directory in Z:\home\localhost\www\justbutik\resize\resize.php on line 85

 

почему ругается на $info = getimagesize($resized_filename); ?

Link to post
Share on other sites
20 часов назад, get31 сказал:

Друзья, подскажите пожалуйста.

Работает, но после удаления файлов из папки products на некоторые товары ошибка


Warning: getimagesize(Z:\home\localhost\www\site/files/products/591970VCQR1-3458.450x600.webp) [function.getimagesize]: failed to open stream: No such file or directory in Z:\home\localhost\www\justbutik\resize\resize.php on line 85

 

почему ругается на $info = getimagesize($resized_filename); ?

Потому что файла не существует.

Я бы добавил дополнительную проверку на существование файла.

Link to post
Share on other sites
22 часа назад, Noxter сказал:

Потому что файла не существует.

Я бы добавил дополнительную проверку на существование файла.

 

так выводить проверку??

{if $product->image->filename|resize:450:600|replace:'.jpg':'.webp'|replace:'.png':'.webp'}
<img src="{$product->image->filename|resize:450:600|replace:'.jpg':'.webp'|replace:'.png':'.webp'}" type="image/webp" />
{else}
<img src="{$product->image->filename|resize:450:600}" />
{/if}

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...