javascript - Angular:如何检测图像方向后视或当我从数据库中获取图像时?
问题描述
我正在尝试做一个居中和裁剪的图像缩略图,所以我从数据库中获取。我找到了有关如何执行此操作的信息: https ://aaronparecki.com/2016/08/13/4/css-thumbnails
该资源是为 javascript 编写的,我使用的是 Angular 7。所以,我在检测图像是否为肖像时遇到了问题。
当我在页面加载之前获取所有照片时,我尝试添加类肖像,但问题是这是我从数据库获得的路径,所以我构建了图像对象。代码是:
getPhotosUser(page) {
this._photoService.getPhotosUser(this.user.id, page).subscribe(
response => {
this.photos = response.objects
var addImageOrientationClass = function (img) {
var imgObject = new Image();
imgObject.src = img;
if(imgObject.naturalHeight > imgObject.naturalWidth){
img.classList.add("portrait")
}
}
this.photos.forEach(function (value: any) {
console.log("PHTOOOSOASAOSIA")
value.path = environment.api.replace('/api', '/') + value.path.replace('app/', '');
addImageOrientationClass(value.path)
})
}
)
}
我得到的错误是:
错误类型错误:无法读取未定义的属性“添加”
我也尝试将它或类似的东西放在 afterview 中,但我没有得到图像的值(如上面资源中的示例)。在简历中,我的代码如下:
ngAfterViewInit() {
var addImageOrientationClass = function (img) {
console.log(typeof(img))
if (img.naturalHeight > img.naturalWidth) {
img.classList.add("portrait")
}
}
var images = document.querySelectorAll("thumbnail img");
images.forEach(function (value: any){
if (value.complete){
addImageOrientationClass(value)
}else{
value.addEventListener("load", function(evt){
addImageOrientationClass(evt.target)
})
}
})
}
图像是空的,为此,如果有人可以帮助我或告诉我有关对此有用的库,我不会得到任何图像。
提前致谢。
解决方案
让我总结一下您的问题,因此您的要求是从数据库加载图像并将它们呈现为缩略图,居中和裁剪。
所以实现的基本思想是:
a)缩略图:只需将图像标签包裹在锚标签内,这将呈现为缩略图
b) 居中和裁剪:使用相同的 css,即您所指的文档。
c)动态加载图像:
1) Create placeholders for anchor->image tag nested inside your photos array
2) map image source dynamically : <img [src]="urlVariable" />
PS:您提到的javascript代码仅用于方向,如果您想动态创建图像元素并在Angular中呈现这些元素,您可以参考:
推荐阅读
- python - 导入错误:在导入熊猫时找不到 DLL 模块
- c++ - 异常“错误:预期';' 在 ndk-build 的顶级声明符之后
- api - Jmeter 中的 TCP/IP API
- node.js - 未使用用于 alpine linux 的预构建 node-sass
- python - 可视化复函数 z1^n + z2^n = 1
- android - 如何通过从另一个应用程序共享音频来共享音频
- c - Windows VS2017 上的 jemalloc 环境设置
- java - 是否有明确定义的默认端口号用作 Java RMI 注册表端口
- python - Python-Arduino USB 通信浮动错误
- php - 如何使用 pdo 删除多个表中的行