我该如何复制Photoshop的“Multiply特效”与图像Magick库或iPhone的obj-c代码? 我在哪里可以找到这样的一些示例代码? 我也看到这question复制Photoshop“Multiply特效”
3
A
回答
4
乘法是一个(Adobe称为)混合模式。混合模式本质上是使用一些数学公式的像素操作。你可以将两个图像混合在一起,或者你可以使用一个,从而产生“自我混合”。
这可以通过对像素逐像素进行操作,获取特定像素的每个通道值并对其进行处理来实现。
不幸的是,我不熟悉Magick库。但是,这是一个给定通道值(红色,绿色或蓝色,0 - 255)将返回乘法运算结果值的公式。
unsigned char result = a * b/255;
注意这里,A和B也必须是无符号的字符,则可能会出现其他的溢出,因为结果会比一个字节大。这是基本的乘法公式,您可以通过分配更大的变量大小并适当修改除数来调整变量以支持每通道16位。
8
如果你想要一个简单的方法来做到这一点,我GPUImage框架有其GPUImageMultiplyBlendFilter,它有两个图像,并进行红,绿,蓝,alpha通道,由通道倍增每个像素。它是以GPU加速的方式实现的,因此它可以比在CPU上执行相同的操作快4-6倍。
要使用此功能,设置你的两个图像融合:
UIImage *inputImage1 = [UIImage imageNamed:@"image1.jpg"];
GPUImagePicture *stillImageSource1 = [[GPUImagePicture alloc] initWithImage:inputImage1];
UIImage *inputImage2 = [UIImage imageNamed:@"image2.jpg"];
GPUImagePicture *stillImageSource2 = [[GPUImagePicture alloc] initWithImage:inputImage2];
然后创建和配置混合滤波器:
GPUImageMultiplyBlendFilter *blendFilter = [[GPUImageMultiplyBlendFilter alloc] init];
[inputImage1 processImage];
[inputImage1 addTarget:blendFilter];
[inputImage2 addTarget:blendFilter];
[inputImage2 processImage];
,最后提取混合后的图像结果:
UIImage *filteredImage = [blendFilter imageFromCurrentlyProcessedOutput];
在目前的实施中有一点需要注意的是,比iPad 2更老的设备有限制提高了纹理尺寸,因此现在无法在这些较旧的设备上处理大于2048x2048的图像。我正在解决这个问题。
0
重复使用Brad Larson代码,对我来说工作得很好。
UIImage *inputImage1 = [UIImage imageNamed:@"image1.jpg"];
GPUImagePicture *stillImageSource1 = [[GPUImagePicture alloc] initWithImage:inputImage1];
UIImage *inputImage2 = [UIImage imageNamed:@"sample.jpg"];
GPUImagePicture *stillImageSource2 = [[GPUImagePicture alloc] initWithImage:inputImage2];
GPUImageMultiplyBlendFilter *blendFilter = [[GPUImageMultiplyBlendFilter alloc] init];
[stillImageSource1 processImage];
[stillImageSource1 addTarget:blendFilter];
[stillImageSource2 addTarget:blendFilter];
[stillImageSource2 processImage];
[blendFilter useNextFrameForImageCapture];
UIImage *filteredImage = [blendFilter imageFromCurrentFramebuffer];
[self.imageView setImage:filteredImage];
相关问题
- 1. JSX复制图层adobe photoshop
- 2. 的CSS的Photoshop文字特效
- 3. 如何制作Photoshop笔画效果?
- 4. Photoshop吸管自动复制颜色
- 5. 在Flash中复制Photoshop调整图层
- 6. 如何修复警告“label`` multiply defined”
- 7. 高效复制/复制树
- 8. Apache Multiply Sites again
- 9. CoreAnimation +效果与Photoshop + UIImageView
- 10. 表情融合photoshop效果
- 11. iPhone - 类似效果的Photoshop
- 12. Javascript Infinity add and multiply
- 13. Codewars - Swift Solution(Multiply Function)
- 14. proc summary with statistic“multiply”
- 15. multiply servlets会话cookie
- 16. STL复制效率
- 17. 如何用python在photoshop中制作影印效果
- 18. 复制特定列
- 19. Photoshop图层问题/制作特定图层更大
- 20. map/multiply values to logical vector
- 21. Numpy multiply array into matrix(outer product)
- 22. 在photoshop上识别文字效果
- 23. 作为在Photoshop中的溢出效果
- 24. GPUImage glsl正弦波photoshop效果
- 25. Photoshop JSX - 如何将任意文本复制到剪贴板?
- 26. Photoshop:通过SDK获取切片并复制内容
- 27. 复制Photoshop文档的当前“视图”而不必平铺?
- 28. 在ImageMagick中复制Photoshop的“颜色”混合模式
- 29. 如何将Photoshop滤镜和动作复制到MATLAB?
- 30. 使用批处理文件将文件复制到photoshop目录
Brad Larson很好的答案! :)但你也可以使用图库应用色调? – janusbalatbat 2012-05-17 05:00:32
@janusfidel - 有几种不同的方法可以改变图像的颜色内容,从调整曝光度,增益或亮度到移动其中一个颜色分量的值并应用颜色矩阵。在一种情况下使用后者来对图像执行棕褐色调。除此之外,使用少量类C代码编写新的过滤器很容易就可以实现所需的效果。 – 2012-05-17 14:48:52
@布拉德拉森谢谢先生。这帮助了很多。 – janusbalatbat 2012-05-18 07:57:26