Этот вопрос уже имеет ответ здесь:
Я хочу сделать следующее в PHP:
У меня есть два изображения, jpg и png. Я хочу изменить размеры jpg к тому же размеру, как png тогда помещают png на вершину. PNG имеет прозрачность, таким образом, я хотел бы сохранить это так шоу jpg внизу.
Если бы кто-либо мог бы помочь, который был бы большим!
Спасибо
<?
$png = imagecreatefrompng('./mark.png');
$jpeg = imagecreatefromjpeg('./image.jpg');
list($width, $height) = getimagesize('./image.jpg');
list($newwidth, $newheight) = getimagesize('./mark.png');
$out = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($out, $jpeg, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagecopyresampled($out, $png, 0, 0, 0, 0, $newwidth, $newheight, $newwidth, $newheight);
imagejpeg($out, 'out.jpg', 100);
?>
Это рабочий код, который я использую
$dest = imagecreatefrompng('mapCanvas.png');
$src = imagecreatefromjpeg('si.jpg');
imagealphablending($dest, false);
imagesavealpha($dest, true);
// Copy and merge
imagecopymerge($dest, $src, 17, 13, 0, 0, 60, 100, 100);
// Output and free from memory
header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
Это не совсем то, что вы хотите, но я установил fillchars =\
и просто использовать подсветку для окрашивания пустого пространства другим цветом. Он менее элегантный, но выглядит хорошо для меня.
Вероятно, Вам потребуется реализовать StartModule. В противном случае вы ведете борьбу со всеми остальными, кто борется за запрос.
Это должно начать...
Вы можете решить, где в жизненном цикле запроса вы хотите выполнить проверку и отреагировать. См. в этой статье для получения дополнительной информации
using System;
using System.IO;
using System.Web;
namespace RequestFilterModuleTest
{
public class RequestFilterModule : IHttpModule
{
#region Implementation of IHttpModule
/// <summary>
/// Initializes a module and prepares it to handle requests.
/// </summary>
/// <param name="context">
/// An <see cref="T:System.Web.HttpApplication"/> that provides access to the methods,
/// properties, and events common to all application objects within an ASP.NET application
/// </param>
public void Init(HttpApplication context)
{
context.BeginRequest += ContextBeginRequest;
}
/// <summary>
/// Disposes of the resources (other than memory) used by the module that implements <see cref="T:System.Web.IHttpModule"/>.
/// </summary>
public void Dispose()
{
}
private static void ContextBeginRequest(object sender, EventArgs e)
{
var context = (HttpApplication) sender;
// this is the file in question
string requestPhysicalPath = context.Request.PhysicalPath;
if (File.Exists(requestPhysicalPath))
{
return;
}
// file does not exist. do something interesting here.....
}
#endregion
}
}
<?xml version="1.0"?>
<configuration>
...............................
<system.web>
...........................
<httpModules>
<add name="RequestFilterModule" type="RequestFilterModuleTest.RequestFilterModule"/>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
...................
</configuration>
-121--3894355- Здесь приведена ссылка на пример, который наложит прозрачный водяной знак на изображение. Возможно, ваш вариант использования, может быть связан.
Существует также способ загрузки изображений JPG, изменения размеров изображений, включения альфа-отслеживания и экспорта изображений в GD.
Джейкоб