2012-02-08 4 views
0

У меня есть сайт, на котором есть галерея, в этой галерее есть большие пальцы, которые при нажатии выведете на объявление из linkbucks. Затем, когда вы ждете 5 секунд, вы можете увидеть изображение в натуральном размере. Проблема в том, что пользователь может пропустить это объявление, просто нажав на большой палец правой кнопкой мыши, затем выберите «Показать изображение» или что-то в этом роде. Как я могу решить эту проблему без необходимости делать файл с большим пальцем для каждого изображения?Должен ли я создавать файл большого пальца для каждого изображения?

Примечание: Мне нужно, чтобы это решение находилось в Javascript/JQuery и/или PHP.

ответ

2

Вы никогда не сможете остановить их, если не сделаете миниатюру. Если у пользователя отключен javascript, он все равно может загрузить изображение. PHP не может остановить их от загрузки изображения, так как он является серверным языком и должен доставить изображение в браузер.

3

Вы не можете.

Если вы уже подали им полное изображение, они уже имеют полное изображение. Игра закончена.

Сделайте миниатюры.

3

Вы можете видеть, что вам действительно нужно создать миниатюру для каждого изображения, здесь нет другого способа.

Однако вам не нужно делать это вручную: PHP способен изменять размеры файлов изображений, тем самым динамически генерируя миниатюры. Ищите учебники, например this one.

2

Вы должны создать эскизы изображений. Вы можете использовать простую функцию PHP, например, ниже.

/** 
    * Create new thumb images using the source image 
    * 
    * @param string $source - Image source 
    * @param string $destination - Image destination 
    * @param integer $thumbW - Width for the new image 
    * @param integer $thumbH - Height for the new image 
    * @param string $imageType - Type of the image 
    * 
    * @return bool 
    */ 
    function creatThumbImage($source, $destination, $thumbW, $thumbH, $imageType) 
    { 
     list($width, $height, $type, $attr) = getimagesize($source); 
     $x = 0; 
     $y = 0; 
     if ($width*$thumbH>$height*$thumbW) { 
      $x = ceil(($width - $height*$thumbW/$thumbH)/2); 
      $width = $height*$thumbW/$thumbH; 
     } else { 
      $y = ceil(($height - $width*$thumbH/$thumbW)/2); 
      $height = $width*$thumbH/$thumbW; 
     } 

     $newImage = imagecreatetruecolor($thumbW, $thumbH) or die ('Can not use GD'); 

     switch($imageType) { 
      case "image/gif": 
       $image = imagecreatefromgif($source); 
       break; 
      case "image/pjpeg": 
      case "image/jpeg": 
      case "image/jpg": 
       $image = imagecreatefromjpeg($source); 
       break; 
      case "image/png": 
      case "image/x-png": 
       $image = imagecreatefrompng($source); 
       break; 
     } 

     if ([email protected]($newImage, $image, 0, 0, $x, $y, $thumbW, $thumbH, $width, $height)) { 
      return false; 
     } else { 
      imagejpeg($newImage, $destination,100); 
      imagedestroy($image); 
      return true; 
     } 
    } 
Смежные вопросы