Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 23.11.2015, 21:11
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Ну а если не каждый пиксел изображения проверять, то как узнать, что есть полупрозрачневый пиксел?
Ответить с цитированием
  #12 (permalink)  
Старый 23.11.2015, 21:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,135


работать из-за безопасности конечно не будет (почти), но как вариант
<!doctype html>
<html>
<meta charset='utf-8'>

<head>
    <title></title>
</head>

<body>
    <script>
        function fn(url, callback) {
            var canvas = document.createElement('canvas'),
                context = canvas.getContext('2d'),
                pic = new Image();
            pic.crossOrigin = "Anonymous";
            pic.onload = function() {
                canvas.width = pic.width;
                canvas.height = pic.height;
                context.drawImage(pic, 0, 0);
                var imageData = context.getImageData(0, 0, pic.width, pic.height);
                var pix = imageData.data;
                var transparent = false;
                for (var i = 0, n = pix.length; i < n; i += 4) {
                    if (pix[i + 3] == 0) {
                        transparent = true;
                        break
                    }
                }


                callback(transparent)

            };

            pic.src = url
        }
        var url = 'http://5.firepic.org/5/images/2015-11/23/zmda01sjsdpe.png',
            callback = function(a) {
                alert(a)
            };
        fn(url, callback)
    </script>
</body>

</html>

Последний раз редактировалось рони, 23.11.2015 в 22:41.
Ответить с цитированием
  #13 (permalink)  
Старый 23.11.2015, 21:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Malleys
Ну а если не каждый пиксел изображения проверять
Никак, о том и речь. Хорошо если область прозрачности в первых пикселях сразу, но если нет, то еще вопрос каковы размеры, да и единична ли такая проверка. Да и первый попавшийся прозрачный пиксель еще не может означать, что у изображения есть область прозрачности сознательно определенная, а если случайность? Если бы речь шла об изображениях на палитре было бы просто - считать палитру и выяснить индекс имеющий прозрачность, но нужен PNG24, да и canvas не работает с индексированной палитрой, хотя это можно и самому сделать.

Если это не единичный случай, то наверное выгоднее в контексте всей задачи это рассматривать - кто источник изображений, кто его готовит, можем ли знать о применении прозрачности у изображения уже на этапе сохранения его на сервере и хранить это как признак?

Последний раз редактировалось laimas, 23.11.2015 в 21:34.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение видимости блока Gomonov Общие вопросы Javascript 0 13.04.2015 18:59
Определение flash в node.js ix0h AJAX и COMET 3 17.01.2015 12:15
Определение текущей страницы. HaseProgram Общие вопросы Javascript 3 12.01.2013 17:39
GoogleMapAPI определение положения центра карты и высоты namo86 Библиотеки/Тулкиты/Фреймворки 1 21.01.2011 16:49
Помогите написать скрипт изменения прозрачности Adamant1n (X)HTML/CSS 3 09.12.2009 16:34