(foto) bijlagens van gebruikens comprimeren

Hulp nodig bij je installatie of kom je ergens niet uit? Probeer phpBB3! Problemen lossen we samen met je op.
phpBB 3.0 is End of support per 1 januari 2017. Dit forum is hier enkel ter archief. Het wordt aangeraden te upgraden naar phpBB 3.2
Forumregels
phpBB 3.0 is End of support per 1 januari 2017. Dit forum is hier enkel ter archief. Het wordt aangeraden te upgraden naar phpBB 3.2
Gesloten
Perr
Berichten: 10
Lid geworden op: 19 jul 2010, 10:00

(foto) bijlagens van gebruikens comprimeren

Bericht door Perr » 12 apr 2012, 11:42

  • Adres van je forum: http://syncronautslowlands.com/forum//
    Event. modificaties op je forum: nvt
    Het aantal bijlages in het forum is op zijn limiet gekomen (200MiB)
    phpBB versie: 3.0.10
    Heb je onlangs iets veranderd aan je forum? nvt

    Het aantal bijlages in het forum is op zijn limiet gekomen (200MiB). Daarom is de limiet verhoogt naar 500MiB. Echter ik zou graag (foto) bijlages van gebruikes willen comprimeren. Niet iedere gebruiker is handig met comprimeren en dus slordig met het aantal MiB's per bijlage. Hoe kan ik dat het makkelijkste een data reductie daar doen?
De maximale bestandsgroote heb ik nu ook aangepast van 1MiB naar 500KiB.
Ik ben er erachter dat ik in de dir /forum/files moet zijn. Maar daar staan geen jpg's die ik even kan downloaden, aanpassen en dan aangepast weer upload onder dezelfde naam.
Hoe kan ik dit het beste aanpakken? Met de hand berichten aanpassen zie ik niet zitten.

Gebruikersavatar
Pola
Berichten: 1495
Lid geworden op: 19 jan 2012, 14:40
Contacteer:

Re: (foto) bijlagens van gebruikens comprimeren

Bericht door Pola » 12 apr 2012, 14:37

Voor zover ik het weet is het niet eenvoudig mogelijk om bijgevoegde afbeeldingen in bijlagen te resizen.

Ik weet niet hoe handig je bent in php. Ik heb namelijk wel een (engelstalig) knowledgebase artikel gevonden om een backup met originele namen te maken van de bijlagen in de /files folder: Knowledge Base - Backing up attachments with their original filenames.
Als je vervolgens de afbeelding aanpast en onder dezelfde originele naam weer opslaat, zou aan de hand van het script uit het knowledgebase artikel een script geschreven kunnen worden die de bijlagen weer met de geconverteerde namen terugzet.
HGN op phpbb.com

Perr
Berichten: 10
Lid geworden op: 19 jul 2010, 10:00

Re: (foto) bijlagens van gebruikens comprimeren

Bericht door Perr » 12 apr 2012, 15:26

Thx,

Ik had ook al in het Engels zitten zoeken maar deze had ik nog niet gevonden.
Het komt wel in de buurt van wat ik wil, het lijk erop dat er nog niet zoveel op dit gebied beschikbaar is.
Zal toch niet de enigste zijn die daar wat aan wil doen.
Zelf iets van een script/tooltje schrijven op het op te lossen dan maar. Zoiets als jij nu voorstelt eerst van encripted naam terug naar de originele naam. Comprimeren. En vervolgens de gecomprimeerde file weer hernoemen naar de juiste encripted file naam. En dan uploaden met ftp.

Eigenlijk wil ik de grootste en oudste jpg's comprimeren. Gecomprimeerde plaatjes zien er vaak net zo goed uit als de originele.

Groeten, Perry
Laatst gewijzigd door Perr op 02 mei 2013, 10:49, 3 keer totaal gewijzigd.

Gebruikersavatar
Pola
Berichten: 1495
Lid geworden op: 19 jan 2012, 14:40
Contacteer:

Re: (foto) bijlagens van gebruikens comprimeren

Bericht door Pola » 12 apr 2012, 15:31

Als je een werkend script hebt, zou je dat dan ook met ons willen delen?
Dan kunnen andere gebruikers van phpBB daar ook weer hun voordeel mee doen.
HGN op phpbb.com

Perr
Berichten: 10
Lid geworden op: 19 jul 2010, 10:00

Re: (foto) bijlagens van gebruikens comprimeren

Bericht door Perr » 12 apr 2012, 15:46

Geen probleem. Nu nog een goed werkend script krijgen. ;)

Per

Gebruikersavatar
Pola
Berichten: 1495
Lid geworden op: 19 jan 2012, 14:40
Contacteer:

Re: (foto) bijlagens van gebruikens comprimeren

Bericht door Pola » 15 apr 2012, 21:18

In het knowledgebase artikel staat het script om een backup te maken van de bijlagen van een forum, waarbij de bijlagen met de originele namen worden opgeslagen.

Ik heb zelf op basis van dat script een nieuw script gemaakt om de (eventueel gecomprimeerde) bestanden met de originele namen weer terug te zetten in de files folder met de phpBB namen.

Kopieer het volgende script naar Notepad++ en sla het op als restore_att.php, upload het naar de root van je forum, zorg dat de (aangepaste) bijlage bestanden met de originele namen in de folder filebackup op je server staan en browse dan naar <url van je forum>/restore_att.php.

Code: Selecteer alles

<?php
/**
* This script will restore all attachments from the filebackup folder to the attachment 
* folder (default "files"), saving them with the cryptic phpBB filename.
* The files in the filebackup folder should have the original filename, prepended by 
* numeric attach_id as created by the restore.php script backing up the attachments.
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Name of script - change if you use a different name for the script
$scriptname = 'restore_att.php';
// Specify the number of attachments to copy in one run - reduce if you receive a timeout from server
$interval = 100;
// Specify the path for the backed up attachments - must have read access
$backuppath = 'filebackup';

// initialise id of last attachement copied
$last_attach_id = 0;

// count number of attachments to process
$sql = 'SELECT COUNT(attach_id) AS num_attach
    FROM ' . ATTACHMENTS_TABLE . '
WHERE attach_id > ' . (int) $last_attach_id . '
ORDER BY attach_id ASC';
$result = $db->sql_query($sql);
$attachs_count = (int) $db->sql_fetchfield('num_attach');

// Output Information
echo dheader();

// read required information from attachment table
$sql = 'SELECT attach_id, physical_filename, real_filename
    FROM ' . ATTACHMENTS_TABLE . '
WHERE attach_id > ' . (int) $last_attach_id . '
ORDER BY attach_id ASC';
$result = $db->sql_query_limit($sql, $interval);

// how many attachment do we copy in this run?
$actual_num = $db->sql_affectedrows($result);
if ($actual_num == 0)
{
    // nothing to do
    $complete = true;
}
else
{
    $complete = false;
    if ($attachs_count <= $interval)
    {
        // this is the last run
        $complete = true;
    }
    while ($row = $db->sql_fetchrow($result))
    {
        // for each attachment
        //remember id
        $last_attach_id = $row['attach_id'];
        // build source filename including path 
        $source = $phpbb_root_path . $backuppath . '/' . $last_attach_id . "_" . $row['real_filename'];
        // build destination filename including path (we fetch the path from config
        $destination = $phpbb_root_path . $config['upload_path'] . '/' . $row['physical_filename'];
        // copy the file
        if (file_exists($source))
        {
            if (copy ($source, $destination))
            {
                // write info to user
                echo sprintf("<tr><td class='succ'>copy succesful:</td><td>%s</td><td>%s</td><td>%s</td></tr>", $last_attach_id, $source, $destination);
            }
            else
            {
                echo sprintf("<tr><td class='error'>copy failed:</span></td><td>%s</td><td>%s</td><td>%s</td></tr>", $last_attach_id, $source, $destination);
            }
        }
        else
        {
            echo sprintf("<tr><td class='error'>source file does not exist:</span></td><td>%s</td><td>%s</td><td>%s</td></tr>", $last_attach_id, $source, $destination);
       
        }
    }
}
// finished
echo dfooter();

function dheader()
{
    global $attachs_count, $interval;
    if ($interval > $attachs_count)
    {
        $interval = $attachs_count;
    }
    $remain = $attachs_count - $interval;

    return '<html>
    <head>
        <title>copy ' . $interval . ' attachments in this run, ' . $remain . ' remain to copy</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf8">
        <style>
            a:visited {COLOR: #3A4273; TEXT-DECORATION: none}
            a:link {COLOR: #3A4273; TEXT-DECORATION: none}
            a:hover {COLOR: #3A4273; TEXT-DECORATION: underline}
            .error {COLOR: red; ; FONT-WEIGHT: bold}
            .succ {COLOR: green; ; FONT-WEIGHT: bold}
            body, table, td {COLOR: #3A4273; FONT-FAMILY: Tahoma, Verdana, Arial; FONT-SIZE: 12px; LINE-HEIGHT: 20px; scrollbar-base-color: #E3E3EA; scrollbar-arrow-color: #5C5C8D}
            input {COLOR: #085878; FONT-FAMILY: Tahoma, Verdana, Arial; FONT-SIZE: 12px; background-color: #3A4273; color: #FFFFFF; scrollbar-base-color: #E3E3EA; scrollbar-arrow-color: #5C5C8D}
            .install {FONT-FAMILY: Arial, Verdana; FONT-SIZE: 20px; FONT-WEIGHT: bold; COLOR: #000000}
        </style>
    </head>
    <body bgcolor="#3A4273\" text="#000000">
        <table width="95%" border="0" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF" align="center">
            <tr>
                <td>
                    <table width="98%" border="0" cellspacing="0" cellpadding="0" align="center">
                        <tr><th colspan="4">copy ' . $interval . ' attachments in this run, ' . $remain . ' remain to copy</th></tr>
                        <tr>
                            <th>Status</th><th>Attach_ID</th><th>phpBB internal file name</th><th>Copy with original file name</th>
                        </tr>';
}

function dfooter()
{
    global $scriptname, $complete;
    if (!$complete)
    {
        $next_step_link = '<a href="' . $scriptname . '">Click to continue with next step</a>';
    }
    else
    {
        $next_step_link = "<b>Completed</b>";
    }

    return '<tr><td colspan="4" align="center">' . $next_step_link . '</td></tr>
                    </table>
                </td>
            </tr>
        </table><br>
    </body>
</html>';
}

?>
HGN op phpbb.com

Gesloten