我有一个图像,我想要水印到其他图像的右下角部分。水印图像的尺寸为179宽,39高。
现在,如果我有另一个尺寸为150宽,20高的图像呢?如果我们尝试使用原始图像对其进行水印,它显然会太大,并且图像本身将被水印图像完全掩盖,对吧?
那么,我如何确定一个较小的宽度和高度,我将调整水印图像的大小,比150宽,20高要小得多,这样它将显示为静止的水印,而不会完全掩盖图像?
发布于 2009-08-05 00:22:49
您需要选取允许水印的较小图像的高度和宽度的最大百分比,然后将水印图像缩放到这两个最大值中较小的一个。您的结果将根据目标图像的高度是否大于宽度而有所不同,反之亦然。
例如,如果您希望水印不超过目标图像高度的25%,不超过目标图像宽度的50%,则可以看到如果将水印缩放到任意一个维度,水印应该有多大。
缩放到宽度的50%将意味着水印将是75x16像素,这太高了(基于我任意选择的百分比)。
(75 / 179) * 39 = 16
缩放到高度的25%将意味着22x5的水印。
(5 / 39) * 150 = 19
如果尺寸最终大于原始水印,则由您决定是否放大水印。与以相同的系数减小图像大小相比,增大图像大小时图像质量的下降要快得多。
发布于 2009-08-05 12:59:15
首先,我建议你生成一组不同大小的水印图像,而不是‘即时’调整大小。
下面我概述了如何在网站上动态添加水印的工作流程:
设计一个好的水印
首先,尝试设计具有透明背景的水印。这将大大降低掩盖目标图像重要部分的风险。这可以通过使用gif或(优选的) png图像文件格式来完成。只需确保透明水印在浅色和深色背景下都能很好地工作。
还要考虑如何最好地设计水印,使其既适用于肖像和风景样式的图像,也适用于宽高比不佳的图像。您应该考虑制作两个版本--一个用于宽图像,另一个用于高图像。对于后一种类型,您可以将水印旋转90度,或者,如果水印由文本组成,则可能需要将文本拆分为两行或更多行。
以几种不同大小的预先呈现水印
因此,不要动态调整水印的大小,我建议您渲染一组不同大小的水印图像。这只需要做一次,它将大大提高水印的清晰度和/或易读性(特别是对于较小的目标图像)。
根据网页上图像的不同程度,您可能需要更大或更小的大小。这是一个你必须做出的设计选择,但我认为你只需要两到三个不同的尺寸就可以了。
应用水印
这将在服务器端动态发生(在您的php文件中)。首先使用getimagesize函数找出目标图像的尺寸。有了这些信息,你必须根据大小、宽高比和方向来决定使用哪个版本的水印。例如。
if ( $width > $height ) {$useLandscapeWatermark=true;}
if ( $width > 100 && $width < 400 ) {$watermarkSize=2;}等。
最后,为了应用水印,我建议您查看gd library。这是一个功能强大的库,可以做许多整洁的trix,其中包括合并两个图像。另一种选择是ImageMagic。
祝好运!
发布于 2009-08-05 00:09:18
我可能会将水印缩放到水印图像的20%,或179x39,以最小者为准。
https://stackoverflow.com/questions/1230528
复制相似问题