Glide 和 Picasso 无法从 YouTube 加载图片
Glide and Picasso not load images from YouTube
我是 ImageView、Picasso、Glide 的新手。
我只想从 url 加载图像,我已经尝试过 Glide 和 Picasso。
它们都很好地加载图像,但如果我尝试从 youtube(缩略图)加载图像 - 不加载。
// http://i.ytimg.com/vi/z0NfI2NeDHI/sddefault.jpg - 未加载
MainActivity.java
imageView = findViewById(R.id.image);
videoImg = ""
fetchData.execute(); //returns link for image to videoImg
Glide.with(this)
.load(videoImg)
.placeholder(R.drawable.ic_launcher_background)
.error(R.drawable.ic_launcher_foreground)
.into(imageView);
Picasso.get().load(videoImg).into(imageView);
activity_main.xml
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
LogCat
W/Glide: Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annotated AppGlideModule implementation or LibraryGlideModules will be silently ignored
W/Glide: Load failed for null with size [0x0]
class com.bumptech.glide.load.engine.GlideException: Received null model
我认为您面临的问题与 Glide、Picasso 或其他库无关。我尝试使用您使用 Glide
提供的图像 link,它按预期工作。
我有根据的猜测是您的设备正在使用某种受限网络,因此它会阻止来自 YouTube 端点的请求 in/out。如果您从另一个网络连接,它会工作得很好。
如果您只想将图像加载到 ImageView 中,只需坚持使用一个库,比如说 Glide。
首先通过查看您的代码,您应该像这样声明 videoImg:
videoImg = "http://i.ytimg.com/vi/z0NfI2NeDHI/sddefault.jpg";
然后检查你的依赖,你应该添加正确的如下:
implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
不要忘记将 mavenCentral() 添加到 builscript 下项目文件的存储库中
在您的清单中添加互联网权限:
<uses-permission android:name="android.permission.INTERNET"/>
好吧,尴尬的局面..
我使用自定义 AsyncTask,其中 returns String(link 到 yt 图像)(在我的例子中是 videoImg)
所以我的代码是:
void ShowImage(View v){
fetchData.execute();
Glide.with(MainActivity.this)
.load(videoImg)
.placeholder(R.drawable.ic_launcher_background)
.error(R.drawable.ic_launcher_foreground)
.into(imageView);
}
所以 AsyncTask 没有时间下载 link 而 Glide 只是试图加载空字符串..
再次抱歉..
我是 ImageView、Picasso、Glide 的新手。 我只想从 url 加载图像,我已经尝试过 Glide 和 Picasso。 它们都很好地加载图像,但如果我尝试从 youtube(缩略图)加载图像 - 不加载。 // http://i.ytimg.com/vi/z0NfI2NeDHI/sddefault.jpg - 未加载
MainActivity.java
imageView = findViewById(R.id.image);
videoImg = ""
fetchData.execute(); //returns link for image to videoImg
Glide.with(this)
.load(videoImg)
.placeholder(R.drawable.ic_launcher_background)
.error(R.drawable.ic_launcher_foreground)
.into(imageView);
Picasso.get().load(videoImg).into(imageView);
activity_main.xml
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
LogCat
W/Glide: Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annotated AppGlideModule implementation or LibraryGlideModules will be silently ignored
W/Glide: Load failed for null with size [0x0]
class com.bumptech.glide.load.engine.GlideException: Received null model
我认为您面临的问题与 Glide、Picasso 或其他库无关。我尝试使用您使用 Glide
提供的图像 link,它按预期工作。
我有根据的猜测是您的设备正在使用某种受限网络,因此它会阻止来自 YouTube 端点的请求 in/out。如果您从另一个网络连接,它会工作得很好。
如果您只想将图像加载到 ImageView 中,只需坚持使用一个库,比如说 Glide。
首先通过查看您的代码,您应该像这样声明 videoImg:
videoImg = "http://i.ytimg.com/vi/z0NfI2NeDHI/sddefault.jpg";
然后检查你的依赖,你应该添加正确的如下:
implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
不要忘记将 mavenCentral() 添加到 builscript 下项目文件的存储库中
在您的清单中添加互联网权限:
<uses-permission android:name="android.permission.INTERNET"/>
好吧,尴尬的局面.. 我使用自定义 AsyncTask,其中 returns String(link 到 yt 图像)(在我的例子中是 videoImg) 所以我的代码是:
void ShowImage(View v){
fetchData.execute();
Glide.with(MainActivity.this)
.load(videoImg)
.placeholder(R.drawable.ic_launcher_background)
.error(R.drawable.ic_launcher_foreground)
.into(imageView);
}
所以 AsyncTask 没有时间下载 link 而 Glide 只是试图加载空字符串..
再次抱歉..