- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有人知道著名的 PHP 类“timthumb”的 ASP.Net 版本吗?只需要一个脚本,它将在“timthumb”的同一行中工作,并为任何大小的图像生成质量好的基于方形或比例的缩略图。
这是指向 php 类的链接:http://www.darrenhoyt.com/2008/04/02/timthumb-php-script-released/
最佳答案
我专门为你写了这篇文章 :) ... 我通过尝试 http://www.binarymoon.co.uk/demo/timthumb-basic/ 中的所有案例对其进行了测试并将其与我的代码并排进行视觉比较。据我所知,它基本上是相同的。话虽如此,它不支持“zc”标志。
我将其编写为通用处理程序(ashx 文件),以便它运行得更快。支持图像缓存,但我将其注释掉,因为它使测试修复变得非常困难。从长远来看,可以随意取消注释以提高性能(一个 block 在开头,一个 block 在将其写入内存流时接近结尾)。
---代码---
<%@ WebHandler Language="VB" Class="Thumb" %>
Imports System
Imports System.Web
Imports System.Drawing
Imports System.IO
Public Class Thumb : Implements IHttpHandler
Private Shared _DefaultWidth As Integer = 100
Private Shared _DefaultHeight As Integer = 100
Private Shared _DefaultQuality As Integer = 90
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
''check the cache for the image first
'Dim cacheObj As Object = context.Cache("Thumb-" + context.Request.Url.ToString().ToLower())
'If cacheObj IsNot Nothing Then
' Dim msCache As MemoryStream = DirectCast(cacheObj, MemoryStream)
' WriteImage(msCache, context)
' Exit Sub
'End If
'process request (since it wasn't in the cache)
Dim imgPath As String = context.Request.QueryString("src")
If String.IsNullOrEmpty(imgPath) Then
context.Response.End()
End If
'get image path on server
Dim serverPath As String = context.Server.MapPath(imgPath)
If Not File.Exists(serverPath) Then
context.Response.End()
End If
'load image from file path
Dim img As Image = Bitmap.FromFile(serverPath)
Dim origRatio As Double = (Math.Min(img.Width, img.Height) / Math.Max(img.Width, img.Height))
'---Calculate thumbnail sizes---
Dim destWidth As Integer = 0
Dim destHeight As Integer = 0
Dim destRatio As Double = 0
Dim qW As String = context.Request.QueryString("w")
Dim qH As String = context.Request.QueryString("h")
If Not String.IsNullOrEmpty(qW) Then
Int32.TryParse(qW, destWidth)
If destWidth < 0 Then
destWidth = 0
End If
End If
If Not String.IsNullOrEmpty(qH) Then
Int32.TryParse(qH, destHeight)
If destHeight < 0 Then
destHeight = 0
End If
End If
'if both width and height are 0 then use defaults (100x100)
If destWidth = 0 And destHeight = 0 Then
destWidth = _DefaultWidth
destHeight = _DefaultHeight
'else, if the width is specified, calculate an appropriate height
ElseIf destWidth > 0 And destHeight > 0 Then
'do nothing, we have both sizes already
ElseIf destWidth > 0 Then
destHeight = Math.Floor(img.Height * (destWidth / img.Width))
ElseIf destHeight > 0 Then
destWidth = Math.Floor(img.Width * (destHeight / img.Height))
End If
destRatio = (Math.Min(destWidth, destHeight) / Math.Max(destWidth, destHeight))
'calculate source image sizes (rectangle) to get pixel data from
Dim sourceWidth As Integer = img.Width
Dim sourceHeight As Integer = img.Height
Dim sourceX As Integer = 0
Dim sourceY As Integer = 0
Dim cmpx As Integer = img.Width / destWidth
Dim cmpy As Integer = img.Height / destHeight
'selection is based on the smallest dimension
If cmpx > cmpy Then
sourceWidth = img.Width / cmpx * cmpy
sourceX = ((img.Width - (img.Width / cmpx * cmpy)) / 2)
ElseIf cmpy > cmpx Then
sourceHeight = img.Height / cmpy * cmpx
sourceY = ((img.Height - (img.Height / cmpy * cmpx)) / 2)
End If
'---create the new thumbnail image---
Dim bmpThumb As New Bitmap(destWidth, destHeight)
Dim g = Graphics.FromImage(bmpThumb)
g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
g.DrawImage(img, _
New Rectangle(0, 0, destWidth, destHeight), _
New Rectangle(sourceX, sourceY, sourceWidth, sourceHeight), GraphicsUnit.Pixel)
'-----write out Thumbnail to the output stream------
'get jpeg image coded info so we can use it when saving
Dim ici As Imaging.ImageCodecInfo = Imaging.ImageCodecInfo.GetImageEncoders().Where(Function(c) c.MimeType = "image/jpeg").First()
'save image to memory stream
Dim ms As New MemoryStream()
bmpThumb.Save(ms, ici, BuildQualityParams(context))
''save image to cache for future use
'context.Cache("Thumb-" + context.Request.Url.ToString().ToLower()) = ms
'write the image out
WriteImage(ms, context)
End Sub
Private Sub WriteImage(ByVal ms As MemoryStream, ByVal context As HttpContext)
'clear the response stream
context.Response.Clear()
'set output content type to jpeg
context.Response.ContentType = "image/jpeg"
'write memory stream out
ms.WriteTo(context.Response.OutputStream)
'flush the stream and end the response
context.Response.Flush()
context.Response.End()
End Sub
'for adjusting quality setting if needed, otherwise 90 will be used
Private Function BuildQualityParams(ByVal context As HttpContext) As Imaging.EncoderParameters
Dim epParams As New Imaging.EncoderParameters(1)
Dim q As Integer = _DefaultQuality
Dim strQ As String = context.Request.QueryString("q")
If Not String.IsNullOrEmpty(strQ) Then
Int32.TryParse(strQ, q)
End If
epParams.Param(0) = New Imaging.EncoderParameter(Imaging.Encoder.Quality, q)
Return epParams
End Function
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
---测试用例---
<img alt="" src="Thumb.ashx?src=~/images/castle1.jpg" />
<br />
<img alt="" src="Thumb.ashx?src=~/images/castle1.jpg&q=100" />
<br />
<img alt="" src="Thumb.ashx?src=~/images/castle1.jpg&q=10" />
<br />
<img alt="" src="Thumb.ashx?src=~/images/castle1.jpg&w=200" />
<br />
<img alt="" src="Thumb.ashx?src=~/images/castle1.jpg&h=150" />
<br />
<img alt="" src="Thumb.ashx?src=~/images/castle1.jpg&h=180&w=120" />
<br />
<img alt="" src="Thumb.ashx?src=~/images/castle1.jpg&h=80&w=210" />
<br />
关于php - asp.net 版本的 timthumb php 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4436209/
我在此版本的 Timthum 中遇到以下问题:2.8.10(在 Wordpress 安装 - 服务器 Ubuntu 上运行): - 当我从托管网站的服务器调用图像时,我收到此错误: 发生 TimThu
我在我的 wordpress 站点中使用 timthumbs。但我包含了我在搜索此问题时发现的所有更改。 我已经启用了“ALLOW_EXTERNAL”和“ALLOW_ALL_EXTERNAL_SITE
有没有TimThumb - 类似于 Django/Python 的脚本? 这是一个图像裁剪&rezise&缓存脚本。简单但非常有效,恕我直言。 最佳答案 这是一个很好的 django 应用程序 htt
我在将 WordPress 安装到新域后遇到错误。我已联系主题开发人员,但未能解决该问题。 复制图像链接时收到以下错误: Warning: touch() [function.touch]: Utim
最近一个网站空间用完了。现在我发现主目录外的 tmp 文件夹中充满了这些文件:timthumb_tmpimg_00BZyC。其中一些文件无法打开。为什么 timthumb 将文件存储在主目录之外? t
我最近开始在现有的 WordPress 网站上工作。 WordPress 安装的主题过多地使用了 TimThumb,这确实是没有必要的。 WordPress native 图像大小应该能够处理所需的功
我正在尝试找出一个 cron 作业,它将从 ftp 根目录(在我们的 public_html 目录之上)复制一个文件 (timthumb.php),并递归地替换整个 FTP 中该文件的所有现有实例。如
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我找到了一些非常好的示例,但不是我所需要的。我的目标是拥有一个我可以每晚运行的批处理脚本,以用位于驱动器根目录的文件的新副本替换文件的所有实例(在我的例子中是 timthumb.php)。 这是我目前
我正在使用 timthumb 在 WordPress 站点中显示全屏图库 slider 。我想要做的是调整该图像的大小以适合访客机器的视口(viewport)。目前这些值是静态的。 我知道 php 无
有人知道著名的 PHP 类“timthumb”的 ASP.Net 版本吗?只需要一个脚本,它将在“timthumb”的同一行中工作,并为任何大小的图像生成质量好的基于方形或比例的缩略图。 这是指向 p
如果我使用 timthumb.php 来缩小图像并以适当的大小自动将它们发布到我的网站上,这听起来很棒。节省大量工作。 但这会影响 http://images.google.com 中的结果吗? ?假
我的团队最近更新了我的网站 www.uksoccershop.com,以使用 timthumb 显示图像缩略图。这已经成功完成,但是从 Google 图片中丢失 SEO 流量的问题迫在眉睫。恐怕 Go
我想要一个获取图像维度和来源并通过timthumb返回裁剪和调整大小的图像的路线PHP 脚本。 我将 timthumb.php 文件放在 public 目录中的一个文件夹中,然后我写了这条路线: Ro
我正在使用 timthumb.php 调整图像大小。它适用于本地镜像,但如果我有将从 MYSQL 获取图像的 URL,然后我想在显示之前动态调整该图像的大小怎么办?我尝试了几种方法。我将从 MYSQL
您好,我的问题是,使用 jQuery 插件动态缩放/调整图像大小是否会比通过 PHP 函数或 TimThumb 更快。 我想到这一点是因为 jQuery 是用户端,而 PHP 是服务器端。 最佳答案
我用的是流行timthumb.php调整图像大小。我可以成功地更改图像的高度和宽度,但是每当我默认“另存为”时,它都会另存为 php.. 例如,如果您尝试保存出现在 http://www.binary
我是一名优秀的程序员,十分优秀!