Extension:ImageFooter/ru

From MediaWiki.org
Jump to: navigation, search
MediaWiki Extension
Crystal Clear action run.png
ImageFooter

Статус: beta

Используемые hook'и UploadVerification
Описание Добавляет пометку к каждому загруженному изображению
Автор(ы) VolodyA! V Anarhist (Beta_M talk)
Версия '0.1'
Лицензия GPL v 3
Ссылка для скачивания no link

Contents

[edit] Для чего нужно это расширение?

Это расширение позволяет добавить текстовую пометку к каждому загруженному изображению (работает только с изображениями, поддерживаемыми библиотекой GD).

[edit] Использование

[edit] Инструкции

Скопируйте програмный код и вставьте его в $IP/extensions/ImageFooter/ImageFooter.php. Внимание: $IP — это директория установки MediaWiki, это там-же где находится файл LocalSettings.php. Найдите в интернете FreeSansBold.ttf и закачайте этот файл в $IP/extensions/ImageFooter/

[edit] Установка

Чтобы установить данное расширение, добавьте в файл LocalSettings.php следующие строки:

require_once( "$IP/extensions/ImageFooter/ImageFooter.php" );
$wgImageFooterString='Какая-то пометка'; // что именно написать на изображениях
$wgImageFooterOffset= array('up' => 9, 'left' => 180); // сдвиг вверх и влево от нижнего правого угла

[edit] Параметры конфигурации

  • $wgImageFooterString – это надпись добавляемая на каждое изображение. Значение по умолчанию: $wgSitename.
  • $wgImageFooterOffest – это список из двух элементов 'up' (вверх) и 'left' (влево), указывающих отклонение от нижнего правого угла. Надпись начнётся на этих координатах.

[edit] Код

<?php
 
// Released under GPLv3
 
if ( ! defined( 'MEDIAWIKI' ) ) die();
 
if ( is_null($wgImageFooterString) || $wgImageFooterString=='' ) $wgImageFooterString=$wgSitename;
 
// Setting up information for Special:Version page
$wgExtensionCredits['media'][] = array(
  'name' => 'Image Footer',
  'author' =>'VolodyA! V Anarhist',
  'url' => 'http://eng.anarchopedia.org/User:Beta_M',
  'version' => '0.1',
  'description' => 'Adds a footer to every image that is uploaded.'
  );
 
$wgHooks['UploadVerification'][] = array('fnImageFooterHook1');
 
function fnImageFooterHook1($saveName, $tempName, &$error)
{
  global $IP, $wgImageFooterString, $wgImageFooterOffset;
  echo $wgImageFooterOffset['left'];
  if(list($width, $height, $type, $attr) = getimagesize($tempName))
  {
 
 
    if(!imagecreatefromtype($tempName, $type, $img))
    {
      $error = 'Unable to open the file in ImageFooter extension, type is '.$type.' img is '.$img;
      return false;
    }
 
    $black = imagecolorallocate($img, 0, 0, 0);
    imagettftext($img, 12, 0, $width-$wgImageFooterOffset['left'], $height-$wgImageFooterOffset['up'], $black, $IP.'/extensions/ImageFooter/FreeSansBold.ttf', $wgImageFooterString);
 
    unlink($tempName);
    if(file_exists($tempName))
    {
      $error = 'File '.$tempName.' exists';
      return false;
    }
 
    if(!imagesavebytype($img, $tempName, $type))
    {
      $error = 'Error saving file';
      return false;
    }
  }
  else // probably not even an image
  {
    return true;
  }
  return true;
}
 
// opens an image regardless of the type
function imagecreatefromtype($file, $type, &$img)
{
  switch($type)
  {
    case IMG_GIF: // gif
      $img = imagecreatefromgif($file);
      break;
    case IMG_JPG: // jpeg
      $img = imagecreatefromjpeg($file);
      break;
    case IMG_PNG: // png
      $img = imagecreatefrompng($file);
      break;
    case IMG_WBMP:// wbmp
      $img = imagecreatefromwbmp($file);
      break;
    case IMG_XPM:// xbm
      $img = imagecreatefromxbm($file);
      break;
    default:
      return false;
      break; // for posterity only
  }
  return true;
}
 
// saves an image regardless of the type
function imagesavebytype($img, $file, $type)
{
  switch($type)
  {
    case IMG_GIF: // gif
      return imagegif($img, $file);
    case IMG_JPG: // jpeg
      return imagejpeg($img, $file);
    case IMG_PNG: // png
      return imagepng($img, $file);
    case IMG_WBMP:// wbmp
      return imagewbmp($img, $file);
    case IMG_XPM:// xbm
      return imagexbm($img, $file);
  }
  return false;
}


Язык: English  • Русский
Personal tools
Namespaces
Variants
Actions
Site
Support
Download
Development
Communication
Print/export
Toolbox