PSD-Support mit GD PSD-Support mit GD
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

PSD-Support mit GD

Started by Zitrone, March 03, 2011, 01:25:31 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Zitrone

Hey liebes Forum,

ich bin sowas von zufrieden mit der Coppermine-Galerie. Flüssig, überschaulich, die Einstellungsmöglichkeiten riesig, alles super.

Aber: Ich möchte das GD für Imageresize weiterhin benutzen, weil ich Probleme mit dem Imagemagick habe.
Jetzt die Frage: "Kann ich irgendwie das GD-Addin umschreiben, damit ich PSD hochladen kann?"


Zurzeit habe ich keinen Link mehr zur Galerie, weil mein FTP geschlossen wurde und ich erst das Backup hochladen muss auf dem neuen.
Der Link bringt aber sowieso nix, weil ich nur in meinre lokalen Netzwerkumgebung eine VM laufen habe mit der Galerie.
Die VM läuft auf Linux, CentOS 5.5. Dort habe ich Probleme mit dem ImageMagick, sonst würde ich ImageMagick nehmen anstatt GD.


Hoffe ihr könnt mir behilflich sein :)
CPG-Version 1.5.8 (Up-to-date)
FTP : 2 GB Traffic
MySQL-Version: 5.0.51a

Αndré

GD kann nur GIF, JPG und PNG verarbeiten.

Zitrone

Da werde ich auch nix am Code ändern können?

Also das man z.B. psd hochlädt, aber es dann in JPEG konvertiert wird :P
CPG-Version 1.5.8 (Up-to-date)
FTP : 2 GB Traffic
MySQL-Version: 5.0.51a

Αndré

Wenn die verwendete Grafikbibliothek etwas nicht verarbeiten kann, dann kann Coppermine es auch nicht. Scheinbar gibt es Erweiterungen für GD, ich hab mir das aber nicht weiter angesehen: http://lmgtfy.com/?q=gd+psd+support

Zitrone

CPG-Version 1.5.8 (Up-to-date)
FTP : 2 GB Traffic
MySQL-Version: 5.0.51a

Αndré

Quote from: http://www.phpclasses.org/browse/file/17603.html*    example use:
*    ------------
*    <?php
*    include_once('classPhpPsdReader.php')
*    header("Content-type: image/jpeg");
*    print imagejpeg(imagecreatefrompsd('test.psd'));
*    ?>


In der Datei include/picmgmt.inc.php findest du folgenden Block:
            if ($imginfo[2] == GIS_GIF && $CONFIG['GIF_support'] == 1)
                $src_img = imagecreatefromgif($src_file);
            elseif ($imginfo[2] == GIS_JPG)
                $src_img = imagecreatefromjpeg($src_file);
            else
                $src_img = imagecreatefrompng($src_file);


Vielleicht klappt es ja schon, wenn du diesen Block durch folgenden Block ersetzt:
            if ($imginfo[2] == GIS_GIF && $CONFIG['GIF_support'] == 1)
                $src_img = imagecreatefromgif($src_file);
            elseif ($imginfo[2] == GIS_JPG)
                $src_img = imagecreatefromjpeg($src_file);
            elseif ($imginfo[2] == GIS_PNG)
                $src_img = imagecreatefrompng($src_file);
            else {
                include_once('classPhpPsdReader.php');
                $src_img = imagecreatefrompsd($src_file);
            }

Zitrone

Ich glaube nicht ganz Andre :D

Parse error: syntax error, unexpected T_STRING in /var/www/html/include/picmgmt.inc.php on line 441
CPG-Version 1.5.8 (Up-to-date)
FTP : 2 GB Traffic
MySQL-Version: 5.0.51a

Αndré

Die Fehlermeldung allein bringt mir gar nichts, wenn ich nicht weiß wann/wo sie auftritt. Auch wären die Zeilen 430-450 aus der entsprechenden Datei sehr nützlich, damit ich weiß, was dort überhaupt steht.

Αndré

Zum Testen des Codes bräuchte ich auch erstmal eine PSD-Datei.

Zitrone

Ja sorry, des war etwas voreilig von mir gehandelt.

Also ich habe die classPhpPsdReader.php mit ins include-Verzeichnis eingefügt

Den code von der picmgmt.inc.php habe ich wie folgt bearbeitet:
case "gd2" :
            if (!function_exists('imagecreatefromjpeg')) {
                return array('error' => 'PHP running on your server does not support the GD image library, check with your webhost if ImageMagick is installed', 'halt_upload' => 1);
            }
            if (!function_exists('imagecreatetruecolor')) {
                return array('error' => 'PHP running on your server does not support GD version 2.x, please switch to GD version 1.x on the admin page', 'halt_upload' => 1);
            }
          if ($imginfo[2] == GIS_GIF && $CONFIG['GIF_support'] == 1)
              $src_img = imagecreatefromgif($src_file);
           elseif ($imginfo[2] == GIS_JPG)
              $src_img = imagecreatefromjpeg($src_file);
            elseif ($imginfo[2] == GIS_PNG)
                $src_img = imagecreatefrompng($src_file);
            else {
               include_once('classPhpPsdReader.php');
                $src_img = imagecreatefrompsd($src_file);
            }



Die Aussage das du erstmal eine psd-Datei bräuchtest, soweit komm ich gar net :)
Ich drücke auf Bild hochladen -> Und kriege diese Fehlermeldung:
Parse error: syntax error, unexpected T_STRING in /var/www/html/include/picmgmt.inc.php on line 441
CPG-Version 1.5.8 (Up-to-date)
FTP : 2 GB Traffic
MySQL-Version: 5.0.51a

Αndré

Könntest du mir bitte eine PSD-Datei zur Verfügung stellen? Danke.

Zitrone

CPG-Version 1.5.8 (Up-to-date)
FTP : 2 GB Traffic
MySQL-Version: 5.0.51a

Αndré

Also bei mir klappt das ohne Probleme. Ich habe die Codeänderung durchgeführt, die Datei in den include-Ordner kopiert und konnte die PSD-Datei ohne Probleme hochladen. Überprüf bitte nochmals Zeile 441, wie es in der Fehlermeldung steht.

Zitrone

ok ich werde dir berichten...
Danke für den Support <3
CPG-Version 1.5.8 (Up-to-date)
FTP : 2 GB Traffic
MySQL-Version: 5.0.51a

Zitrone

Willst du mir mal deine picmgmt.inc.php schicken?
Ich kopiere diese einfach mal rein und hoffe das es geht :)
CPG-Version 1.5.8 (Up-to-date)
FTP : 2 GB Traffic
MySQL-Version: 5.0.51a

Zitrone

Willst du mir mal deine picmgmt.inc.php schicken?
Ich kopiere diese einfach mal rein und hoffe das es geht :)


Habe mir den Code nochmal genauer angeschaut, kann nichts auffälliges finden, was ich falsch gemacht habe
CPG-Version 1.5.8 (Up-to-date)
FTP : 2 GB Traffic
MySQL-Version: 5.0.51a

Αndré

Anbei sowohl picmgmt.inc.php als auch classPhpPsdReader.php.

Zitrone

Super ich danke dir...
VM ist gerade im Reboot...

Werde ich gleich eine Lösung angeben :)
Falls du willst, schreibe ich auch dein ein Tutorial in Englisch und Deutsch, wie man den PSD-Support hinzufügt
CPG-Version 1.5.8 (Up-to-date)
FTP : 2 GB Traffic
MySQL-Version: 5.0.51a

Αndré

Immer mit der Ruhe, das ist noch nicht die entgültige Lösung. Bei meinen derzeitigen Einstellungen wird versucht die PSD-Datei in Originalgröße im Browser darzustellen, was natürlich nicht funktioniert. Hier muss man überlegen, was man möchte. Möchte man die PSD-Datei als Datei anbieten, oder lediglich deren Inhalt präsentieren (sprich, die Datei in JPG oder sonstwas umwandeln und die PSD-Datei danach löschen).

Zitrone

Also ich will es:

PSD hochladen, das diese dann angezeigt wird...
Von mir aus als JPG :)

Aber ich hab ein ganz anderes Problem:
Fatal error: require() [function.require]: Failed opening required 'include/picmgmt.inc.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/upload.php on line 26

So steht es bei mir in der Upload.php
----------------
// Call basic functions, etc.
require('include/init.inc.php');
Zeile 26: require('include/picmgmt.inc.php');

// Check to see if user can upload pictures.  Quit with an error if user cannot.
if (!USER_CAN_UPLOAD_PICTURES && !USER_CAN_CREATE_ALBUMS) {
    cpg_die(ERROR, $lang_errors['perm_denied'], __FILE__, __LINE__);
----------------
CPG-Version 1.5.8 (Up-to-date)
FTP : 2 GB Traffic
MySQL-Version: 5.0.51a