Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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_Imageview_Picasso - Fatal编程技术网

Android毕加索图像不加载

Android毕加索图像不加载,android,imageview,picasso,Android,Imageview,Picasso,我加载图像有两种情况,第一种是直接从internet加载图像,第二种是加载在设备中下载的图像。每当我加载时,10个图像中有8~9个被显示,1-2个丢失。我看到解码结果是错误的,谷歌尽我所能地搜索,但是没有找到 等待\u并发\u GC阻塞22ms 等待\u并发\u GC阻塞20ms GC_FOR_ALLOC freed 718K,31%free 9948K/14256K,暂停49ms,总计51ms D/skia:---解码器->解码返回错误GC_并发释放1370K,30%释放10081K/1425

我加载图像有两种情况,第一种是直接从internet加载图像,第二种是加载在设备中下载的图像。每当我加载时,10个图像中有8~9个被显示,1-2个丢失。我看到解码结果是错误的,谷歌尽我所能地搜索,但是没有找到

  • 等待\u并发\u GC阻塞22ms
  • 等待\u并发\u GC阻塞20ms
  • GC_FOR_ALLOC freed 718K,31%free 9948K/14256K,暂停49ms,总计51ms
  • D/skia:---解码器->解码返回错误GC_并发释放1370K,30%释放10081K/14256K,暂停3ms+2ms,总计33ms
  • 所有释放916K的GC,30%释放10029K/14256K,暂停66ms,总计67ms
  • 下面是我用来通过毕加索加载的代码:

            Picasso.with(activity)
                .load(path)
                .placeholder(R.drawable.thumbnail_placeholder)
                .resize(width,height)
                .into(imageView);
    
    有没有办法解决这个问题?每次在屏幕上加载图像时,我都会调用fit()/resize()。非常感谢您的帮助,提前感谢

    仅供参考,我在两台机器、模拟器和真实设备(三星Galaxy Tab 3)上都进行了测试,在模拟器上工作没有任何问题,但在真实设备上会出现问题

    更新:


    这是由图像的颜色空间引起的,没有显示的图像是在YMCK颜色空间中的图像

    您可以使用
    Picasso.with(Context).setLoggingEnabled(true)
    打开毕加索日志。您可能会看到一条带有原因的错误消息

    还值得记录您正在使用的URL并在浏览器中试用,以防万一。

    看看

    检查您是否在ImageView中使用固定大小,请参阅更多信息以查看


    希望这有帮助

    在毕加索中,您应该在
    .load()
    方法中传递url以从internet加载图片,在
    文件的对象中键入url以从设备存储器加载图片

    因此,如果图片存储在设备上,请按如下方式加载:

            Picasso.with(activity)
                    .load(new File(path))
                    .placeholder(R.drawable.thumbnail_placeholder)
                    .resize(width,height)
                    .into(imageView);
    
    并使用此代码从internet加载图片:

            Picasso.with(activity)
                    .load(path)
                    .placeholder(R.drawable.thumbnail_placeholder)
                    .resize(width,height)
                    .into(imageView);
    

    若任何东西都不起作用,那个是因为托管图像的服务器存在一些问题,它们的url不会直接将您带到图像,但在后端,其他东西正在工作,它可能会在chrome或其他浏览器中打开,但不确定在毕加索中是否会加载,所以您可以尝试以下代码:

    final OkHttpClient client = new OkHttpClient.Builder()
            .protocols(Collections.singletonList(Protocol.HTTP_1_1))
            .build();
    
    final Picasso picasso = new Picasso.Builder(this)
            .downloader(new OkHttp3Downloader(client))
            .build();
    
    Picasso.setSingletonInstance(picasso);
    
    其中,OkHttp3Downloader实例由该库提供。

    我不知道它是否与这个问题有关,但我的问题是用Glide而不是毕加索解决的。

    在manifaest中检查互联网权限

    <uses-permission android:name="android.permission.INTERNET"/>
    

    我也遇到了同样的错误,我调整了同一幅图像的大小并将其上传到firebase,然后使用毕加索加载其URL,这次效果非常好;图像已成功加载

    在调整大小之前,没有显示相同的图像,也没有毕加索的日志

    我花了将近两天的时间才意识到真正的问题在于图像大小。我将图像大小调整为500x500,一切正常


    注意:在我的例子中,我是从设备的摄像头捕捉图像,然后将其上传到firestore,然后使用毕加索加载图像。因此,为了解决这个问题,我开始在activityResult()方法中调整图像大小,然后将调整大小的图像保存到本地存储并上传到firestore。

    确保您的图像URL包含https而不是http 如果您的imageUrl包含http,则创建网络安全配置文件 在res文件夹xml文件夹下,并提及URL 例如


    检查您在清单中是否具有以下权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET"/>
    
    
    
    尝试将Url开头的http:替换为https:(如果适用)

    适合我。

    使用下面的链接

    Picasso.Get().Load(imageUri).Placeholder(Resource.Drawable.patient_profile_pic).Resize(100, 100).Into(imgProflle);
    
    Xamarin或.Net

     byte[] imageBytes;
    
    
        using (var webClient = new WebClient())
        {
          imageBytes = webClient.DownloadData(imageUri);
        }
    
        Bitmap bitmap = BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);
    
        imgProflle.SetImageBitmap(bitmap);
    

    我曾面临同样的问题,但下面是对我有效的解决方案

    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.squareup.okhttp:okhttp:2.3.0'
    implementation 'com.squareup.okhttp:okhttp-urlconnection:2.3.0'
    
    ===============================================================================

    private static Picasso picasso = null;
    public static Picasso.Builder picassoBuilder ;
    
    
    public static void loadImageInto(Context context, String url, int width, int 
     height, Target target) {
        initPicasso(context);
      picasso.load(url)
                .error(android.R.drawable.stat_notify_error)
                .resize(width, height)
                .centerCrop()
                .into(target);
    }
    
    public static void initPicasso(Context context) {
        if (picasso == null) {
             picassoBuilder = new Picasso.Builder(context);
    
            try {
                Picasso.setSingletonInstance(picasso);
            } catch (IllegalStateException ignored) {
                // Picasso instance was already set
                // cannot set it after Picasso.with(Context) was already in use
            }
            picassoBuilder.downloader(new OkHttpDownloader(new OkHttpClient())).memoryCache(Cache.NONE).loggingEnabled(true).indicatorsEnabled(true);
    
            picasso = picassoBuilder.build();
            
        }
    }
    

    没有人会像我这样愚蠢,但为了完整性:如果你在布局文件中的图像视图中添加一种染色颜色,它会模糊成功加载的图像。

    你可以使用
    Picasso.with(Context).setLoggingEnabled(true)
    来启用调试,以便排除确切的原因。 如果日志有类似于
    错误504的内容
    请尝试使用

    android:usesCleartextTraffic=“true”

    在清单的应用程序标记中。它对我有用


    也许这对某人有帮助

    对于我的url,我使用的是http://localhost:8080/api/get image/image.jpg


    您需要设置服务器的ip而不是本地主机

    //首先以字符串形式存储链接

    String url =     
            "https://i.pinimg.com/originals/fc/92/13/fc9213e50a1978c845d7195e988a3322.jpg";
            Picasso.with(this).load(url).into(imageView);
    

    希望这个解决方案能帮助别人

    创建xml文件名网络并将该代码粘贴到该文件中

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true">
            <trust-anchors>
                <certificates src="system" />
            </trust-anchors>
        </base-config>
    </network-security-config>
    
    
    
    清单中添加/包括这个network.xml文件和这一行android:usesCleartextTraffic=“true”,如下所示

     <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:networkSecurityConfig="@xml/network"
            android:usesCleartextTraffic="true"
    

    我怀疑这是内存问题,你能用较小的图片试试吗?也许图片的url在你的国家被屏蔽了。有趣的是,我一定会试试。谢谢你的时间!我想这已经变成了
    Picasso.get().setLoggingEnabled(true)
    谢谢你提供的信息,def。值得一试!这篇文章帮助我从存储器中加载图像。谢谢您知道如何在不指定宽度和高度的情况下进行中心裁剪吗?Glide会自动完成,但毕加索要求你提供数值。天哪,这是一个简单的答案(19年7月25日)。。毕加索不愿载入这幅图像,但格莱德载入了。不知道为什么。在我的情况下,我有一个向量绘制,毕加索仍然没有加载它。把它扔给Glide了,是的。Glide甚至还有一些额外的方法,比如加载byter数组等。很适合从数据库加载,而无需自己手动解码位图。是的,必须输入“IP地址”而不是本地主机。是的,我测试了这个URL,它正在工作。
    String url =     
            "https://i.pinimg.com/originals/fc/92/13/fc9213e50a1978c845d7195e988a3322.jpg";
            Picasso.with(this).load(url).into(imageView);
    
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true">
            <trust-anchors>
                <certificates src="system" />
            </trust-anchors>
        </base-config>
    </network-security-config>
    
     <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:networkSecurityConfig="@xml/network"
            android:usesCleartextTraffic="true"