Пиксельные операции — ImageCallFunctionAtPositions

В GMS 3.4.x появились новые скриптовые функции для попиксельных операций. Может ли кто-нибудь привести короткие примеры того, как использовать эти функции?

  • void ImageCallFunctionAtPositions(BasicImage src, маска BasicImage, Объект ScriptObject, String funName )

  • RealImage ImageEvaluateFunctionAtPositions(BasicImage src, Маска BasicImage, объект ScriptObject, String funName )

  • void ImageReplaceByFunctionAtPositions(BasicImage src, BasicImage маска, объект ScriptObject, строка funName )

Спасибо!

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
0
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Команды сценария описаны в справочной документации F1 в разделе:

F1 help

Пример также можно найти в разделе «Примеры» документации, откуда я скопировал его сюда:

class CPointLister
{
    image xylist
    number count
    
    void AddNonZeroPoint( object self , image src , number px , number py )
    {
        if ( 0 != sum( src[ px , py ] ) )
        {
            xylist[ 0 ,count ] = px
            xylist[ 1 ,count ] = py
            xylist[ 2 ,count ] = src[ px , py ]
            count++
        }           
    }
    
    image GetNonZeroPointsXY( object self , image input )
    {
        count = 0
        image mask = !!input    // 1 for non-zero points, 0 else    
        number nPts = sum( mask )   
        xylist := RealImage( "XY maskpoints" , 4 , 3 , nPts )
        ImageCallFunctionAtPositions( input , mask , self , "AddNonZeroPoint" )
        return xylist 
    }
}

image test := realimage( "Test image" , 4 , 512 , 512 )
test = random() < 0.001 ? random() * 100 : 0 
test.ShowImage()
image pointList := Alloc( CPointLister ).GetNonZeroPointsXY( test )
pointList.ShowImage()
pointList.ImageGetImageDisplay( 0 ).ImageDisplayChangeDisplayType( "spreadsheet" )

Минималистичный пример ImageReplaceByFunctionAtPositions() выглядит следующим образом:

class CPixeltimer
{
    number st
    CPixelTimer(object self) { st = GetHighResTickCount(); }
    number Timing(object self, image src , number px , number py )
    {
        return (GetHighResTickCount() - st)/GetHighResTicksPerSecond()
    }
}

image test1 := realimage( "Test image 1 - inplace " , 4 , 512 , 512 )
test1.ShowImage()
test1.ImageReplaceByFunctionAtPositions( Alloc(CPixelTimer), "Timing") 

image test2 := realimage( "Test image 2 " , 4 , 512 , 512 )
test2 = random()
image mask = test2*0 +(iradius<100 ? 1 : 0)
image test3 := test2.ImageEvaluateFunctionAtPositions( mask, Alloc(CPixelTimer), "Timing")
test3.Setname("Test image 3 - masked evaluation")
test3.ShowImage()
 

Другие вопросы по теме