在Mediawiki上传时调整图片大小

6

我希望对我上传到mediawiki的所有图像进行大小调整,并设置最大宽度和最大高度。

浏览了mediawiki的各个页面的文档后,我没有找到任何关于编辑上传到mediawiki网站的图片的说明。

尽管我可以编写一些自定义PHP代码,但实际上我不知道从哪里开始在mediawiki中寻找解决方法。

我的想法是:使用imagemagick,类似于这个

I think you need the > flag on the resize:

convert -size 300x200 xc:red   small.png
convert -size 1000x500 xc:blue large.png
Now convert them both to 800x600 with no flags:

convert small.png -resize 800x600 a.png   # 800x533
convert large.png -resize 800x600 b.png   # 800x400
Now with flags:

convert small.png -resize 800x600\> a.png # 300x200
convert large.png -resize 800x600\> b.png # 800x400

但是,我无法确定您将在图像上传后在哪里运行此代码以更改文件的尺寸。

任何帮助都将是极好的。


1
这应该会有所帮助... https://dev59.com/KlkS5IYBdhLWcg3wV1Zy#40008440 - Mark Setchell
2
你为什么要这样做?MediaWiki已经可以调整大小(在正确配置的情况下)原始图像以供显示(同时保留原始图像)。如果您不希望用户上传大文件,可以设置$wgMaxImageArea$wgMaxUploadSize - Ángel
1
谢谢@Ángel。这些是很好的例子。原因很简单。大约有22,000张图片需要上传,而且由多个用户上传。我们不认为如果用户必须退出、调整大小和重新保存图像,那么会有很多用户实际上会上传。所以通常在编程时,我尽可能地让用户使用更加方便:D - Jamie Hutber
1
正确的@IlmariKaronen。需要更小的图像是为了防止下载这些图像,然后打印并出售。 - Jamie Hutber
1
是的,我可以帮助您创建 PHP 脚本来调整图像大小并保持其质量。为了调整所有图像的大小,我们可以通过 cron 作业来实现现有的图像,并且可以在您的 MediaWiki 中实现以转换新上传的图像。 - Rohit Mittal
显示剩余9条评论
1个回答

0
你可以尝试使用正确钩子链接的扩展: https://www.mediawiki.org/wiki/Manual:Hooks/UploadForm:BeforeProcessinghttps://www.mediawiki.org/wiki/Manual:Hooks/UploadVerifyFile

编辑:

在LocalSettings.php的末尾添加以下示例,将上传文件的标志放置在右上角:

$wgHooks['UploadForm:BeforeProcessing'][]=function(&$upload) { 
    $fictmp = $upload->mUpload->getTempPath();
    $newtmp = tempnam("/tmp", "tmp");
    $mylogo = "/path/to/my/logo/220px-SNice.svg.png";
    exec("composite -gravity NorthEast $mylogo $fictmp $newtmp" );
    copy($newtmp, $fictmp);
    unlink($newtmp);
    return true;
};

谢谢Tuckbros。你能提供一个使用示例吗?我有点困惑。 - Jamie Hutber
我对此不熟悉,但可以参考以下链接获取灵感:https://www.mediawiki.org/wiki/Extension:UploadedFileHasher(使用UploadComplete钩子)。 - Tuckbros
将以下内容添加到LocalSettings.php中,会在一个文件中记录正在上传的临时文件的名称。我猜你可以利用它来执行你的操作。$wgHooks['UploadForm:BeforeProcessing'][]=function(&$upload) { $fictmp = $upload->mUpload->getTempPath(); file_put_contents("/tmp/UploadForm",$fictmp . "\n"); return true; }; - Tuckbros

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接