我想从源BufferedImage到目的地复制(矩形区域)ARGB值BufferedImage.不应该进行合成:如果我复制ARGB值为0x8000BE50(alpha值为128)的像素,则目标像素必须精确为 0x8000BE50,完全覆盖目标像素.
我有一个非常精确的问题,我做了一个单元测试来展示我需要的东西.单元测试功能齐全,设备齐全,传递良好,正是我想要的.
但是,我想要一种更快,更有效的内存方法来替换copySrcIntoDstAt(...).
这就是我的问题的全部要点:我不是在追求如何以更快的方式"填充"图像(我所做的仅仅是进行单元测试的一个例子).我想要的只是知道什么是快速和内存有效的方法(即快速而不是创建不必要的对象).
我所做的概念验证实现显然非常节省内存,但速度很慢(每个像素执行一次getRGB和一次setRGB).
原理上,我有这样的:(其中A表示复制前目标图像的相应像素)
AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA
Run Code Online (Sandbox Code Playgroud)
我希望有这个:
AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAABBBBAAA
AAAAAAAAAAAAABBBBAAA
AAAAAAAAAAAAAAAAAAAA
Run Code Online (Sandbox Code Playgroud)
其中'B'代表src图像中的像素.
请注意,我正在寻找copySrcIntoDstAt(...)方法的完全替代,而不是API链接/引用.
import org.junit.Test;
import java.awt.image.BufferedImage;
import static org.junit.Assert.*;
public class TestCopy {
private static final int COL1 = 0x8000BE50; // alpha at 128
private static final int COL2 = 0x1732FE87; // alpha at 23
@Test
public void testPixelsCopy() {
final …Run Code Online (Sandbox Code Playgroud)