小编Mat*_*ini的帖子

将颜色滤镜应用于位图

我需要为图像着色,如下例所示。从文件加载图像后,我需要在内存中应用此转换。

我想要实现的示例可以在以下链接中找到(我从中获取了所附图片)。另一个实现我感兴趣的功能的网站:链接 在此输入图像描述

过滤器的颜色必须是可定制的。我也有可用的ImageEn库,我开始使用该函数进行一些测试CastColorRange,但是它没有给我预期的结果

var
  FIMageEn: TImageEn;
...

procedure TTest.ApplyColorMask(const ARGBFilter: TRGB);
begin
  FIMageEn.Proc.CastColorRange(FProcOverrideColorStartRange, // BeginColor
    FProcOverrideColorEndRange, // EndColor
    ARGBFilter); // Filter
end;
Run Code Online (Sandbox Code Playgroud)

上面显示的代码片段的问题在于该函数需要 rgb 格式的一系列颜色,但由于图像彼此不同,我不知道要设置什么范围

delphi image-processing

2
推荐指数
1
解决办法
421
查看次数

在 Delphi 中释放 TCriticalSection 对象的正确方法

这是释放TCriticalSection在 Delphi 初始化部分中创建的对象的正确方法吗?

initialization
  FPoolingCS := TCriticalSection.Create;
Run Code Online (Sandbox Code Playgroud)
finalization
  FPoolingCS.Acquire;
  FreeAndNil(FPoolingCS);
Run Code Online (Sandbox Code Playgroud)

我应该ReleaseFree?之前调用该方法?

Acquire方法是否会抛出一些我需要处理的异常?

delphi multithreading

1
推荐指数
1
解决办法
131
查看次数

如果进程死掉,释放redis锁

我正在使用 Redis 分布式锁来确保某些 celery 任务不会同时运行。为了使用 redis 管理锁,我使用 python redis库版本4.0.0(它指定任何死锁问题都应该由程序员处理)。

由于我想避免使用锁的超时参数,因为任务执行时间变化很大,所以我想知道是否有一种方法可以验证活动锁是否确实由进程拥有,并且它具有没有因为应用程序突然崩溃而无法释放而被阻止。

@shared_task(
    name='test_task',
    queue="test"
)
def test(value):
    lock_acquired = False
    try:
        lock = redis_cli.lock('test_lock', sleep=1)
        lock_acquired = lock.acquire(blocking=False)        
        if lock_acquired:
            print(f"HELLO FROM: {value}")
            sleep(15)
        else:
            print(f"LOCKED")
    except Exception as e:
        print(str(e)) 
    finally:
        if lock_acquired:
            lock.release()
Run Code Online (Sandbox Code Playgroud)

就上面的代码而言,如果应用程序在 sleep (15)期间意外崩溃,则该锁仍将在下次执行时被锁定,即使获取它的进程不再存在。我怎样才能防止这种情况发生?

蟒蛇版本:3.6.8

Redis服务器版本:Redis服务器v=4.0.9 sha=00000000:0 malloc=jemalloc-3.6.0 位=64 build=9435c3c2879311f3

芹菜==5.1.1

python concurrency locking redis celery

1
推荐指数
1
解决办法
1374
查看次数