gpt4 book ai didi

java - 将图像转换为灰度图像时应用程序没有响应

转载 作者:行者123 更新时间:2023-12-01 14:46:50 25 4
gpt4 key购买 nike

我正在尝试开发一个可以对现有图像应用一些基本效果的应用程序。我对此非常满意。但当我开始使用像素时,它就停止工作了。有人可以帮我吗?我应该使用另一个线程而不是主线程来编写以下代码吗?

         int[] imagePixels = new int[picWidth * picHeight];
bitmap.getPixels(imagePixels, 0, picWidth, 0, 0, picWidth, picHeight);


for (int y = 0; y < picHeight; y++) {

for (int x = 0; x < picWidth; x++) {

int index = y * picWidth + x;
int red = (imagePixels[index] >> 16) & 0xff;
int green = (imagePixels[index] >> 8) & 0xff;
int blue = imagePixels[index] & 0xff;

red = (int) Math.abs(red-255);
green = (int) Math.abs(green-255);
blue = (int) Math.abs(blue-255);

imagePixles[index] = 0xff000000 | (red << 16) | (green << 8) | blue;

}
}
bitmap.setPixels(imagePixels, 0, picWidth, 0, 0, picWidth, picHeight);

最佳答案

如果您正在编写 GUI 代码(AWT/Swing/等),第一条规则是永远不要在调度线程中执行任何 CPU 密集型操作。

如果您正在响应用户输入(例如鼠标单击、触摸或菜单选择),并且您计划执行一些会占用大量处理器时间的操作,请分出一个单独的线程来完成工作,然后提交作业完成时向事件队列发送一个事件。

这样,UI 就会响应迅速,并且当您在应用效果后想要刷新部分显示时,它将响应用户生成的事件和以编程方式生成的事件。

这是针对任何 UI 编码的一般建议,有人可能可以添加更多有关 Android 特定功能的内容;我的猜测是,Android 操作系统没有收到对其注入(inject)事件处理队列的事件的响应,因此假设您的应用程序已经死了,而实际上它还活着,只是忙于在调度线程中做一些它应该做的事情。不是。

希望有帮助。

关于java - 将图像转换为灰度图像时应用程序没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15359148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com