Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android应用程序中绘制资源图像时,图像非常暗淡_Android_Image_Brightness - Fatal编程技术网

在android应用程序中绘制资源图像时,图像非常暗淡

在android应用程序中绘制资源图像时,图像非常暗淡,android,image,brightness,Android,Image,Brightness,我正在尝试加载两个图像(都是800 x 1280),作为游戏中永久滚动的背景。我可以使用以下代码很好地加载它们: public Image newImage(String imageName, ImageFormat format) { Config config = null; if (format == ImageFormat.RGB565) config = Config.RGB_565; else if (format == ImageFormat

我正在尝试加载两个图像(都是800 x 1280),作为游戏中永久滚动的背景。我可以使用以下代码很好地加载它们:

public Image newImage(String imageName, ImageFormat format) {
    Config config = null;
    if (format == ImageFormat.RGB565)
        config = Config.RGB_565;
    else if (format == ImageFormat.ARGB4444)
        config = Config.ARGB_4444;
    else
        config = Config.ARGB_8888;

    Options options = new Options();
    options.inPreferredConfig = config;

    Bitmap bitmap = null;
    try {
        int id = resources.getIdentifier("<package>"+imageName, null, null);
        bitmap = BitmapFactory.decodeResource(resources, id, options);
        if (bitmap == null)
            throw new RuntimeException("Couldn't load bitmap from resources");
    } catch (Exception e) {
        throw new RuntimeException("Failed to load image");
    } 

    if (bitmap.getConfig() == Config.RGB_565)
        format = ImageFormat.RGB565;
    else if (bitmap.getConfig() == Config.ARGB_4444)
        format = ImageFormat.ARGB4444;
    else
        format = ImageFormat.ARGB8888;

    return new AndroidImage(bitmap, format);
}
public Image newImage(字符串imageName,ImageFormat){
Config=null;
if(format==ImageFormat.RGB565)
config=config.RGB_565;
else if(format==ImageFormat.argb444)
config=config.ARGB_4444;
其他的
config=config.ARGB_8888;
选项=新选项();
options.inPreferredConfig=config;
位图=空;
试一试{
int id=resources.getIdentifier(“+imageName,null,null);
位图=BitmapFactory.decodeResource(资源、id、选项);
如果(位图==null)
抛出新的RuntimeException(“无法从资源加载位图”);
}捕获(例外e){
抛出新的RuntimeException(“加载映像失败”);
} 
if(bitmap.getConfig()==Config.RGB_565)
format=ImageFormat.RGB565;
else if(bitmap.getConfig()==Config.ARGB_4444)
格式=ImageFormat.argb444;
其他的
格式=ImageFormat.argb888;
返回新的AndroidImage(位图,格式);
}
但当我在屏幕上绘制它们时,它们明显比实际图像暗。我已经确保屏幕亮度调整到100%,并且我已经尝试了所有3种不同的图像格式。下面是正在发生的事情的一个例子:

真实图像

截图


我不知道这是否影响了你,但我有一个类似的问题,下面是我找到的解决方案

我有一个启动屏幕活动,它使用ImageView,并从文件中动态加载一个图像以放入其中。下面是该活动的onCreate()的摘录:

这在大多数手机上都可以,但在其中一些手机上,图像会显示约50%的暗淡

这是对我有效的修复方法。在填充
imageView
之后(从文件加载图像之前),我添加了以下内容:

if(Build.VERSION.SDK\u INT>=11){
float alpha=imageView.getAlpha();
Log.d(标签“alpha为”+alpha);
如果(α<1.0)
imageView.setAlpha(1.0f);
如果(Build.VERSION.SDK_INT>=16){
int-imageAlpha=imageView.getImageAlpha();
Log.d(标签“imageAlpha为”+imageAlpha);
如果(imageAlpha<255)
setImageAlpha(255);
}
}
在出现问题的手机上,上面的日志显示imageAlpha是55,而不是255。我不知道这是怎么发生的。但将其设置为255解决了问题


我第一次尝试在活动的布局xml文件中设置
android:imageAlpha=“255”
,但得到一个错误,说没有这样的属性。谢天谢地,
setImageAlpha()
在运行时成功了。

可能不是因为图像,而是因为您显示图像的方式。视图上是否设置了alpha?我不这么认为,如果你愿意,我可以发布代码。这个问题很老,但我在从文件加载图像并显示它时遇到了类似的问题-它显示得很暗,但仅在某些手机上。我想@Henry是对的,它与视图中的alpha有关,但我不知道设置在哪里,也不知道为什么它只影响某些手机。
setContentView(R.layout.activity_splash);
ImageView imageView = (ImageView)findViewById(R.id.imageView);

File splashImageFile = new File(dir, filename);
Drawable splashDrawable = Drawable.createFromPath(splashImageFile.getAbsolutePath());
if (splashDrawable != null) {
    imageView.setImageDrawable(splashDrawable);
}
// The following works but maybe only for newer versions of the API:
// imageView.setImageURI(Uri.fromFile(splashImageFile));
if (Build.VERSION.SDK_INT >= 11) {
    float alpha = imageView.getAlpha();
    Log.d(TAG, "alpha is " + alpha);
    if (alpha < 1.0)
        imageView.setAlpha(1.0f);

    if (Build.VERSION.SDK_INT >= 16) {
        int imageAlpha = imageView.getImageAlpha();
        Log.d(TAG, "imageAlpha is " + imageAlpha);
        if (imageAlpha < 255)
            imageView.setImageAlpha(255);
    }
}