V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leben
V2EX  ›  PHP

PHP、Imagick处理图片融合

  •  
  •   leben · 2011-03-16 14:26:03 +08:00 · 6003 次点击
    这是一个创建于 4999 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用php+imagick实现类似ps图层叠加的效果,理论上是读取每个像素的rgb值然后计算出一个融合后的值再写到图片里。但是现在处理的速度太慢了,600*600的照片都处理不出来。但是利用相同的思路用object-c实现速度还可以接受。

    哪位大神有什么好的思路,指点一下吧。
    5 条回复    1970-01-01 08:00:00 +08:00
    GordianZ
        1
    GordianZ  
    MOD
       2011-03-16 14:33:50 +08:00
    combineImages?
    What do you mean by "图层叠加"? Mask or transparent overlay?
    leben
        2
    leben  
    OP
       2011-03-16 14:50:14 +08:00
    类似于compositeImage,但是新图像每个像素的rgb是用我们自己的公式计算的。
    如果一个600*600的图像,逐像素计算,全部处理完就需要600*600*3的计算量,还不算getColor和setColor的开销。
    不明白compositeImage的效率为啥那么快,我直接用convert融合图片,花费的时间都比compositeImage多。。。

    同事iphone app的实现快很多,一次融合大约1-2秒就完事了,也是逐像素计算。我知道php的效率要慢一些,但是实在是慢的不能接受啊。
    GordianZ
        3
    GordianZ  
    MOD
       2011-03-16 14:55:47 +08:00
    @leben wrote a C program to process the queue then.
    muxi
        4
    muxi  
       2011-03-16 15:02:31 +08:00
    imagick 指的是PHP的那个扩展?
    这个太垃圾了,建议直接在服务器上安装ImageMagick 或者GraphicMagic,使用exec来调用shell命令处理,速度能提升10倍以上,当然如果你的CPU足够的强大,提升得会更多,谁用谁知道……
    leben
        5
    leben  
    OP
       2011-03-16 15:15:36 +08:00
    对c不是很熟悉。。。残念,不过貌似这是唯一的办法了。
    to muxi:exec调用的速度也不是很快,反正没有imagick实现的compositeImage的速度快。还是尝试一下捣鼓c吧。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2787 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:07 · PVG 23:07 · LAX 07:07 · JFK 10:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.