Показать сообщение отдельно
  #1 (permalink)  
Старый 11.06.2013, 00:48
Новичок на форуме
Отправить личное сообщение для SSinn Посмотреть профиль Найти все сообщения от SSinn
 
Регистрация: 11.06.2013
Сообщений: 1

Разбор палитры изображений
Доброго времени суток.
У меня есть скрипт который разбирает доминирующие цвета на изображении.
Помогите пожалуйста дописать чтоб при наведении на цвет писало его HEX код и RGB код.
Вот сам скрипт:
Код:
$(document).ready(function () {
 
    if (typeof window.FileReader === 'function') {
      $('#dragDrop').show();
 
      var $dropZone = $('#dropZone');
 
      var dragEnter = function( evt ){
        evt.stopPropagation();
        evt.preventDefault();
        $dropZone.addClass('dragging');
      };
 
      var dragLeave = function( evt ){
        evt.stopPropagation();
        evt.preventDefault();
        $dropZone.removeClass('dragging');
      };
 
      var dragOver = function( evt ){
        evt.stopPropagation();
        evt.preventDefault();
      };
 
      var drop = function( evt ){
        evt.stopPropagation();
        evt.preventDefault();
        $dropZone.removeClass('dragging');
        
        var dt = evt.originalEvent.dataTransfer;
        var files = dt.files;
 
        handleFiles( files );
      };
 
      $dropZone
        .on('dragenter', dragEnter)
        .on('dragleave', dragLeave)
        .on('dragover', dragOver)
        .on('drop', drop);
    }
 
    var displayColors = function( image ) {
      var $image = $(image);
      var imageSection = $image.closest('.imageSection');
      var appendColors = function (colors, root) {
          $.each(colors, function (index, value) {
              var swatchEl = $('<div>', {'class': 'swatch'})
                  .css('background-color', 'rgba('+ value +', 1)');
              root.append(swatchEl);
          });
      };
 
      // Dominant Color
      var dominantColor = getDominantColor(image);
      var dominantSwatch = imageSection.find('.dominantColor .swatches');
      appendColors([dominantColor], dominantSwatch);
 
      // Palette
      var colorCount = $image.attr('data-colorcount') ? $image.data('colorcount') : 10;
      var medianPalette = createPalette(image, colorCount);
      var medianCutPalette = imageSection.find('.medianCutPalette .swatches');
      appendColors(medianPalette, medianCutPalette);
    };
 
    function handleFiles( files ) {
      var imageType = /image.*/;
      var fileCount = files.length;
 
      for (var i = 0; i < fileCount; i++) {
        var file = files[i];
 
        if ( file.type.match(imageType) ) {
          var reader = new FileReader();
          reader.onload = function( e ) {
              imageInfo = { images: [
                  {'class': 'droppedImage', file: e.target.result}
                ]};
 
              var html = Mustache.to_html($('#template').html(), imageInfo);
              $('#draggedImages').prepend( html );
 
              var img = $('.droppedImage .targetImage').get(0);
 
              // Must wait for image to load in DOM, not just load from FileReader
              $(img).on('load', function() {
                displayColors( img );
                util.centerImg( img, 400, 300);
 
                $('.droppedImage').slideDown();
              });
            };
          reader.readAsDataURL(file);
        } else {
          alert('File must be a supported image type.');
        }
      }
    }
 
   /* var html = Mustache.to_html($('#template').html(), imageArray);
    $('#main').append(html);*/
 
    // Use lettering.js to give letter by letter styling control for the h1 title
    $("h1").lettering();
 
    // For each image:
    // Once image is loaded, get dominant color and palette and display them.
    $('img').bind('load', function (event) {
      var image = event.target;
      displayColors( image );
    });
});
 
var util = {
  centerImg: function( img, containerWidth, containerHeight) {
      var $img = $(img);
      var imgWidth = $img.get(0).width;
      var imgHeight = $img.get(0).height;
      var imgAspectRatio = imgHeight/imgWidth;
 
      if ( imgHeight > containerHeight ) {
        imgWidth = containerHeight / imgAspectRatio;
        $img.css('width', ( imgWidth + "px" ));
      }
      if ( imgWidth > containerWidth ) {
        $img.css('width', ( containerWidth + "px" ));
        imgHeight =  imgAspectRatio * containerWidth;
      }      
      if ( imgWidth < containerWidth ) {
        var hOffset = ( containerWidth - imgWidth )/2;
        $img.css('margin-left', ( hOffset + "px" ));
      }
      if ( imgHeight < containerHeight ) {
        var vOffset = ( containerHeight - imgHeight )/2;
        $img.css('margin-top', ( vOffset + "px" ));
      }
    }
};
Вот HTML файл:
Код:
<!doctype html>
<html class="no-js" lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 
  <link href='http://fonts.googleapis.com/css?family=Varela+Round|Terminal+Dosis:400,700,600' rel='stylesheet' type='text/css'>
 
    <title>Color Thief</title>
    <meta name="description" content="">
    <link rel="stylesheet" href="css/app.css">
    <script src="js/libs/modernizr-2.0.6.min.js"></script>
</head>
<body>
 
<div id="container">
    <header>
        <h1>Color Thief</h1>
        <p>Программа яка визначає колірну палітру загруженого зображення, та підбирає найліпші кольора які підійдуть до цього зображення.</p>
    </header>
    <div id="main" role="main">
    <div id='dragDrop' style='display: none'>
      <h2>Программа</h2>
      <div id="dropZone" class="dropZone">
      </div>
      <div id="draggedImages"></div>
    </div>
    </div>
</div> 
 
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.8.3.min.js"><\/script>')</script>
<script src="js/libs/jquery.lettering.js"></script>
<script src="js/libs/mustache.js"></script>
 
 
<script src="js/libs/quantize.js"></script>
<script src="js/color-thief.js"></script>
<script id='template' type='text/x-mustache'>
  {{#images}}
  <div class="imageSection {{class}} ">
    <div class="imageWrap">
      <img class="targetImage" src="{{file}}" data-colorcount="{{colorCount}}" />
    </div>
    <div class="colors">
      <div class="function dominantColor">
        <h3>Домінуючий колір на зображенні</h3>
        <div class="swatches"></div>
      </div>
      <div class="function medianCutPalette clearfix">
        <h3>Палітра кольорів загруженого зображення</h3>
        <div class="swatches"></div>
      </div>
    </div>
  </div>
  {{/images}}
</script>
 
<script src="index.js"></script>
</body>
</html>
2) И еще у меня есть алгоритм подбора подходящего цвета для изображения... В бд храниться цвета и их форматы.. Помогите пожалуйста сделать так :
После определения палитры цветов мы брали по алгоритму цвета из бд которые подходят к палитре и выводили пару вариантов...
Заранее благодарен.
Ответить с цитированием