问题标签 [imageresizer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ImageResizer/System.Drawing 和 CMYK JPEG
我正在使用 ImageResizer 库在 ASP.NET MVC 4 项目中进行一些简单的图像大小调整和旋转。问题是,当我使用它处理 32-bpp CMYK JPEG 文件时,它失败并出现 ArgumentException,但仅在我的(Windows Server 2008 R2)服务器上 - 它在我的(Windows Vista)笔记本电脑上运行良好。
有问题的 JPEG 文件不是太大 (700x500) 或其他非标准文件 - 所有 Web 浏览器和 Paint 都可以很好地打开它们,即使在有问题的服务器本身上也是如此。JPEG 是使用 ImageMagick 生成的,如果我要求 ImageMagick 使用 RGB 颜色空间(-colorspace sRGB
.) ,一切正常
奇怪的是,在所有情况下调整图像大小都可以正常工作,但如果我尝试在服务器上调整图像大小和旋转图像,它就会失败。
看起来一些较低级别的 Win32 或 GDI+ 函数调用在这里失败了 - 这是堆栈跟踪的相关部分:
有任何想法吗?
imageresizer - 使用 ImageResizer 跳过授权的正确方法
HttpConext 对象具有SkipAutorization 属性,用于禁用UrlAuthorizationModule中的授权检查,这是标准 asp.net 管道的一部分。
ImageResizer在正常的 asp.net 管道之外直接调用UrlAuthorizationModule.CheckUrlAccessForPrincipal 。因此,不支持 SkipAutorization 属性。
解决方法是:
此处的外部 OnFirstRequest 是为了确保在加载所有插件之后发生 AuthorizeImage 订阅,因此它是链中的最后一个执行。
我不喜欢这种解决方法,因为它完全依赖于实现。例如,如果 ImageResizer 插件加载从 onFirstRequest 移动到其他地方,它将中断。
如果这在 ImageResizer 本身中得到修复,那就太好了。我建议将 InterceptModule 中的附加 Autorization 检查更改为以下内容:
这合适吗,还是有更好的解决方案?
在问题的最后一部分,我将描述我的用例,阅读完全是可选的,但它给出了这个查询是如何产生的透视图。
在一个asp.net 应用程序中,我有一个提供pdf 文档的HttpHandler。它接受 url 和标题中的文档 ID 和安全信息(我正在使用 OAuth)并执行所有安全检查,如果它们成功,则从数据库中检索 pdf 文档路径,并通过响应将文件提供给客户端。写文件。
我需要以图像形式提供 pdf 页面的预览,为此我使用 ImageResize 和 PdfRenderer 插件。
不幸的是,在我的文件处理程序工作之前不知道 pdf 的路径,并且对于 ImageResizer 对请求采取行动来说为时已晚,因为所有魔法都发生在 PostAuthorizeRequest 中,这(显然)在处理程序运行之前。
为了解决这个问题,我将我的 HttpHandler 重写为 HttpModule,它在 BeginRequest 上执行。如果授权检查失败,则请求在此处被切断。如果它们没问题,那么我使用 PathRewrite 指向生成的 pdf,同时将正确的 Content-Type 和其他标头写入响应。同时我设置了 context.SkipAutorization 标志,因为根据 web.config 配置无法通过直接 url 访问 pdf 文件,如果不跳过授权,管道甚至不会到达 PostAuthorizeRequest。在这种情况下跳过授权是安全的,因为模块已经执行了所有必需的检查。
所以这允许执行流程到达 ImageResizer。但随后 Image resizer 决定它要重新检查 pdf url 上的授权。除非您应用上述解决方法,否则它会失败。
重新检查的理由是什么?在上面的场景中,当 ImageResizer 有工作要做时,它要提供的图像不是出现在 URL 中的图像,并且 asp.net 管道已经完成了身份验证检查,现在我们在 PostAuthorizeRequest 中。这种重新检查在哪些情况下有用?
imageresizer - ImageResizer 调整白平衡
一直在玩ImageResizer的StudioJS包装器。ImageResizer 可以相对于颜色调整白平衡吗?最终,我希望用户能够单击图像中应该是白色的区域,然后调整图像的其余部分。
我看到了使用 AdvancedFilters 插件的自动平衡功能,我想我想更进一步。
c# - 在 MVC 应用程序中缓存图像的正确方法
我正在使用ImageResizing库,在我的 C# Mvc 应用程序中调整和传递我的图像。
但是没有发生的一件事是我的图像没有被缓存。
我正在努力理解为每个图像适当添加缓存所需的内容。
我只需要知道我是否在写轨道上?这会正确缓存我的图像吗?
我想我需要做的是在我的 ImageResizer_OnPostAuthorizeRequestStart 中设置 FinalContentType 和 FinalContentType(我不知道从哪里获得这些值)
然后,我希望在 Application_PreSendRequestHeaders 中我可以使用下面的代码正确设置缓存标头。
我使用了此处描述的方法的修改版本。
这是我的代码:
asp.net-mvc-3 - mvc3 图像调整器
我下载了 Nugent ImageResizer,我正在尝试按照此页面http://imageresizing.net/docs/managed上的示例调整上传图片的大小,但我看不到将其放入 Var 或 Image 变量中,所以我可以在Path.Combine中看到它是代码
如何在 var 或某种类型的图像变量中获取ImageBuilder我想做的是这样的
我要做的就是将ImageBuilder放在Path.Combine中而不会出错,我们将不胜感激。
asp.net-mvc - ImageResizer 和没有扩展名的图像文件
我一直在我们的网络应用程序中很好地使用ImageResizer.net,但现在我需要它来调整大小并提供没有(也不能)有文件扩展名的图像,比如这个:
在这种情况下,我知道我的文件总是 TIFF,但它们不会有文件扩展名。
我有哪些选择?
/resizer.debug.ashx:https://gist.github.com/raw/9c867823c983f0e5be10/4db31cb21af8b9b36f0aa4e765f6f459ba4b309f/gistfile1.txt _
更新
我按照计算机语言学家的指示:
http://localhost:58306/ClientImages/Batch/2012/12/10/92d67b45584144beb5f791aaaf760252?width=600
只响应原始图像而不调整大小。
这也被问到这里:http: //imageresizing.net/docs/howto/cache-non-images#comment-571615564
这发生在使用 Cassini 或 Visual Studio Web 服务器或任何您想调用它的开发过程中。
c# - ImageResizer 库:除非重建项目,否则插件无法加载
我在 ASP.NET MVC 4 项目中使用ImageResizer 库(版本 3.2.4),并带有以下插件:Watermark、MvcRoutingShim、DiskCache 和 SimpleFilters。
当我第一次在 Visual Studio 2012 中启动项目时,一切正常。
但是在停止并重新启动项目 2 或 3 次后,插件无法加载,这在诊断页面中得到了确认:
DLL 文件位于 \bin 文件夹中。
我可以通过在 Visual Studio 中执行项目的“清理”操作,然后“重建”来解决问题。
但是为什么插件在一段时间后无法加载?
c# - 无法引用 system.drawing.dll
我正在尝试使用 ImageResizer 调整图像大小,但不断收到编译错误
“错误 1 类型 'System.Drawing.Bitmap' 在未引用的程序集中定义。您必须添加对程序集 'System.Drawing 的引用”
在寻找解决方案时,我发现了几个类似的问题,解决方案是引用 system.drawing.dll 以便能够处理图像,但是当我尝试通过以下方式引用它时:
右键项目->添加引用->选择COM->找到system.drawing.dll
但这给了我另一个错误,说“activeX 类型库 system.drawing.tlb 是从 .NET 程序集中导出的,不能作为参考添加。改为添加对 .NET 程序集的引用”
这就是我对下一步做什么感到目瞪口呆的地方。
编辑:
我得到错误的代码
amazon-s3 - 如何防止 Imageresizer 使用 Cloudfront 插件创建无效 url?
我在 Amazon S3 上托管我的图像并且只存储一种图像大小。
到目前为止,我已经成功地使用Imageresizer来根据请求调整我的图像大小。
现在我需要介绍 Cloudfront CDN,这给我带来了困难。
我已经按照文档设置了我的配置。
像这样:
然后我捕获到我的应用程序的任何 URL,如下所示:
以便 Imageresizer 可以处理它们。
当它这样做时,它将更改我的 URL 以使用正确的 CDN 路径,但它也会将查询字符串参数更改为分号:
对此:
不幸的是,Amazon S3 不喜欢这样,并将其作为拒绝访问而踢出。然而,亚马逊很乐意为原始查询字符串提供服务。
那么,如何保留查询字符串以防止 Imageresizer 将参数更改为分号?
或者配置 amazon,以便无论分号如何,它都会提供图像?
c# - 使用 AzureReader2 插件的 Azure ImageResizer 未调整大小
编辑
我让它工作,但我必须添加 RemoteReader 插件。当我从我的项目中删除 AzureReader2 插件时,它仍然可以正常工作,但是 AzureReader2 插件对我有什么好处?
原始问题
我已经完成了此处概述的所有内容(包括评论),但似乎无法弄清楚为什么我不能使用此 imageresizer 插件即时调整图像大小。
这是我在元素下的 web.config 条目的样子:
我已经将我的容器设置为“img”。
当我访问此 URL 进行测试时:
https://<account>.blob.core.windows.net/img/image.jpg?width=50
图像显示但只是其常规大小。我也尝试在本地和现场 AWS 上运行它,但仍然没有调整大小:(