Image vergrößern aber nicht skalieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Image vergrößern aber nicht skalieren

    Hallo,

    ich suche eine Möglichkeit, ein vorhandenes Bild zu vergrößern, dabei aber das Bild nicht neu zu skalieren.

    Beispiel:
    Ich habe ein Bild mit der Größe 80x30 Pixel und möchte es gerne auf 80x50 Pixel vergrößern, also einfach unter das Bild einen weißen Rand mit einer Höhe von 20 Pixeln hinzufügen und das Bild dann neu ausgeben.

    Warum: Weil Facebook für die Vorschau von Links erst Bilder anzeigt, die mindestens 50x50 Pixel groß sind und meine Grafiken sind alle 80x30 Pixel groß und es sind knapp 400 Grafiken, die ich alle ändern müsste...

    Hoffe mir kann jemand helfen und ich hoffe auch ich habe mich verständlich ausgedrückt

    Achja, ich bin neu hier: Hallo liebe Community


  • #2
    Entweder mit der Gdlib oder ImageMagick. Wenn du Photoshop hast, kannst du das in einem Rutsch mit einer Aktion erledigen.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Hallo,

      der kostenlose IrfanView kann auch einfache Operationen im Batch-Modus ausführen.

      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        Hey Kropff, hey AmicaNoctis,

        dass es solche Möglichkeiten gibt, ist mir klar! Aber dann muss ich auf meiner Webseite auch ne Menge am Design ändern und die CSS umschreiben und mehr platz schaffen und und und...

        Die Grafiken sollen auch für eine externe Seite (Facebook) vergrößert werden und auf meiner Webseite so bleiben, ich füge dann einfach nur eine versteckte Grafik auf jede Seite ein die dann für Facebook gedacht ist.

        Aus diesem Grund wäre es klasse, wenn mir hier jemand behilflich sein kann, das ganze via PHP umzusetzen...

        Udii

        Kommentar


        • #5
          Zitat von Udii Beitrag anzeigen
          Aus diesem Grund wäre es klasse, wenn mir hier jemand behilflich sein kann, das ganze via PHP umzusetzen...
          Dann arbeite mit der gdlib.

          Peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Hey Peter,

            gdlib ist mir bei der Suche schon aufgefallen und ich habe dort mit meinen schlechten PHP Kenntnissen versucht was zu basteln (gdlib – Bildformate macximal) aber leider ohne Erfolg!

            Die Grafik wird immer gestreckt und ich brauche einfach die Original Grafik 80x30 Pixel als 80x50 Pixel mit einem 20 Pixel hohem Rand auf der Unterseite.

            Hier mal ein Bild um es zu verdeutlichen, oben so wie ich es bisher hinbekommen habe und unten wie ich es gerne haben möchte...



            Udi

            Kommentar


            • #7
              Hallo,

              Hintergrundbild erstellen.
              Hintergrund mit weißer Farbe füllen.
              Bild auf den Hintergrund kopieren.

              Gruß,

              Amica
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                Hey Amica,

                danke dir!

                Kannst du mir vielleicht dabei helfen das umzusetzen? Ich habe Programmiertechnisch keine Ahnung... Mir liegt das grafische mehr

                Gerne werde ich dafür auch einen Amazon Wunschzettel um eine Buch oder so erleichtern wenn ich das darf!

                Udi

                Kommentar


                • #9
                  Ich hab grad keine Zeit dafür, aber ich verschieb das mal nach Projekthilfe. Vielleicht findet sich ja jemand dafür.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    Nicht erschrecken, die Benutzung ist ziemlich einfach. Siehe Anwendungsbeispiel am Ende.

                    Für alle Menschen, die außerhalb des Sauerkrautimperiums leben, habe ich den
                    Quelltext mit Kommentaren versehen, die in einer Sprache verfasst sind, von der
                    ich glaube, dass sie dem Englischen nahe kommt.
                    PHP-Code:
                    /*
                    what?:
                    image_canvas_resize 0.0 (2010-08-22)

                    found at:
                    http://php-resource.de/forum/projekthilfe/100115-image-vergroessern-aber-nicht-skalieren.html


                    note:
                        The image creating functions can cause the script to break
                        if the given dimensions don't fit into PHP's memory limit.
                        That's an issue of the internal PHP memory allocation functions
                        and therefore __can't__ be fixed within a PHP script.
                    */

                    /// copy a bitmap into a bigger bitmap
                    /// return rsrc(image) | FALSE in case of an error
                    function image_canvas_resize(
                        
                    $src_img/// rsrc(image) image resource | str(uri:path) path to an image file
                        
                    $top 0/// int(0...) upper padding in pixels
                        
                    $left 0/// int(0...) left padding in pixels
                        
                    $bottom 0/// int(0...) lower padding in pixels
                        
                    $right 0/// int(0...) right padding in pixels
                        
                    $bg_colour 0x0 /// int(0...0xffffff) |
                                        // str('0x...') background colour as RGB-value
                                        // defaults to black
                    ) {
                        if (!
                    is_resource($src_img)) {
                            if (!
                    is_string($src_img) || !is_file($src_img)) {
                                
                    error::writefln('not a path given %s'$src_img);
                                
                    // neither a path nor an image resource given
                                
                    return FALSE;
                            }
                            
                    // detect image file type
                            
                    if (!preg_match(
                                
                    // the "." is only there to make the recognised pattern 7 bytes long
                                
                    '/\A(?:\xff\xd8\xff|GIF8[79]a|\x89PNG\x0d\x0a.)/s',
                                
                    file_get_contents($src_img0NULL07),
                                
                    $hits
                            
                    )) {
                                
                    // unknown image format
                                
                    return FALSE;
                            }
                            static 
                    $loaders = array (
                                
                    => 'imagecreatefromjpeg',
                                
                    => 'imagecreatefromgif',
                                
                    => 'imagecreatefrompng',
                            );
                            if (!isset(
                    $loaders[strlen($hits[0])])) {
                                return 
                    FALSE// could not detect image file type
                            
                    }

                            
                    $loaderfunc $loaders[strlen($hits[0])];
                            
                    // load image to resource
                            
                    if (!is_resource($src_img $loaderfunc($src_img))) {
                                return 
                    FALSE// could not load image from file
                            
                    }
                        }
                        
                        
                    // 24 bit RGB or 8 bit palette?
                        
                    $true_colour imageistruecolor($src_img);
                        
                        
                    // sanitize dimensions
                        
                    $top $top : (int) $top;
                        
                    $left $left : (int) $left;
                        
                    $bottom $bottom : (int) $bottom;
                        
                    $right $right : (int) $right;
                        
                        
                    // calculate dimensions for the destination bitmap
                        
                    $dst_width imagesx($src_img) + $left $right;
                        
                    $dst_height imagesy($src_img) + $top $bottom;
                        
                        
                    // build the destination bitmap
                        
                    if (!is_resource(
                            
                    $dst_img $true_colour
                                
                    imagecreatetruecolor($dst_width$dst_height)
                                : 
                    imagecreate($dst_width$dst_height)
                        )) {
                            return 
                    FALSE;
                        }
                        
                        
                    // sanitize background colour argument
                        
                    $bg_colour is_numeric($bg_colour)
                            ? 
                    intval($bg_colourpreg_match('/\A\s0x/'$bg_colour) ? 10 16) & 0xffffff
                            
                    0x0;

                        if (!
                    $true_colour) {
                            
                    imagepalettecopy($dst_img$src_img);
                        }
                        
                        
                    // allocate background colour
                        
                    $r = ($bg_colour >> 16) & 0xff;
                        
                    $g = ($bg_colour >> 8) & 0xff;
                        
                    $b $bg_colour 0xff;
                        if (
                            !
                    is_int($bg_colour imagecolorallocate($dst_img$r$g$b)) ||
                            
                    $bg_colour === -// PHP < 5.1.3
                        
                    ) {
                            
                    // there is no free entry in the palette
                            // so we choose one which fits best
                            
                    $bg_colour imagecolorclosest($dst_img$r$g$b);
                        }
                        
                    // note: $bg_colour is now an RGB value for truecolour images
                        //  or a palette index number otherwise

                        // fill with background colour
                        
                    if (!imagefilledrectangle(
                            
                    $dst_img,
                            
                    00$dst_width 1$dst_height 1,
                            
                    $bg_colour
                        
                    )) {
                            return 
                    FALSE;
                        }
                        
                        
                    // copy the source bitmap into the destination bitmap
                        
                    if (!imagecopy(
                            
                    $dst_img$src_img,
                            
                    $left$top// dst_x, dst_y
                            
                    00,        // src_x, src_y
                            
                    imagesx($src_img), imagesy($src_img// src_w, src_h
                        
                    )) {
                            return 
                    FALSE;
                        }
                        
                        return 
                    $dst_img;

                    PHP-Code:
                    $src_path 'path/to/src-jpeg.jpg';

                    $dst_path 'another/path/to/dst.png';

                    $src $src_path;

                    // 20 Pixel breiten Rand unten ("at the bottom")
                    // in weiß (RGB: 0xffffff) hinzufuegen

                    $dst image_canvas_resize($src002000xffffff);

                    // das Ergebnis abspeichern
                    if (!imagepng($dst$dst_path)) {
                        die(
                    sprintf(
                            
                    'could not write image resource to file "%s"',
                            
                    $dst_path
                        
                    ));

                    Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                    Kommentar


                    • #11
                      Bin jetzt weiter gekommen...

                      Folgende Umgebung:
                      auf dem Server liegen in einem Ordner folgende Dateien:
                      src.gif (80x50 Pixel großes weiße Grafik)
                      welle.gif und hundi.gif (80x30 Pixel große Grafik)
                      img.php (das folgende Script)

                      PHP-Code:
                      <?php
                      // Create image instances
                      $dest imagecreatefromgif('src.gif');
                      $src imagecreatefromgif($img);

                      // Copy and merge
                      imagecopymerge($dest$src00008050100);

                      // Output and free from memory
                      header('Content-Type: image/gif');
                      header('Pragma: no-cache');
                      imagegif($dest);

                      imagedestroy($dest);
                      imagedestroy($src);
                      ?>
                      Wenn ich jetzt die img.php wie folgt im Browser aufrufe, wird ein Bild erzeugt aber der Hintergrund ist mal weiß und mal schwarz:

                      Hier schaut selber:
                      http://www.sport-fuhr.de/php/img.php?img=welle.gif
                      http://www.sport-fuhr.de/php/img.php?img=hundi.gif

                      Wie kann ich das ändern?

                      Kommentar


                      • #12
                        Zitat von Udii Beitrag anzeigen
                        Bin jetzt weiter gekommen...

                        Folgende Umgebung:
                        auf dem Server liegen in einem Ordner folgende Dateien:
                        src.gif (80x50 Pixel großes weiße Grafik)
                        welle.gif und hundi.gif (80x30 Pixel große Grafik)
                        img.php (das folgende Script)

                        PHP-Code:
                        <?php
                        // Create image instances
                        $dest imagecreatefromgif('src.gif');
                        $src imagecreatefromgif($img);

                        // Copy and merge
                        imagecopymerge($dest$src00008050100);

                        // Output and free from memory
                        header('Content-Type: image/gif');
                        header('Pragma: no-cache');
                        imagegif($dest);

                        imagedestroy($dest);
                        imagedestroy($src);
                        ?>
                        Wenn ich jetzt die img.php wie folgt im Browser aufrufe, wird ein Bild erzeugt aber der Hintergrund ist mal weiß und mal schwarz:

                        Hier schaut selber:
                        http://www.sport-fuhr.de/php/img.php?img=welle.gif
                        http://www.sport-fuhr.de/php/img.php?img=hundi.gif
                        Ich sehe bei beiden Grafiken einen weißen Hintergrund ...

                        Wie kann ich das ändern?
                        Das von mir vorgestellte Script kann unterschiedliche Farben für den zusätzlichen Rand auswählen, wenn schon alle Paletteneinträge belegt sind. Bei deinen Beispiel-Bildern dürfte das aber nicht der Fall sein, weil beide die Farbe Weiß enthalten.

                        Bei deinem Script vermute ich mal, dass du die Palette der Ziel-Bitmap an die der Ausgangs-Bitmap anpassen musst. Die beiden sind nicht automatisch gleich.

                        Falls dein Script überhaupt so funktioniert, wie du dir das vorgestellt hast. Die Variable $img taucht aus dem Nichts auf und die imagedestroy()-Anweisungen am Ende halte ich für wenig sinnvoll. Wenn man einfach drauflos experimentiert, kommt man selten zu einer brauchbaren Lösung.

                        Es ist auch keine gute Idee die Grafiken direkt an den Browser zu senden, wenn man noch am Experimentieren (Herumtesten, Debuggen ...) ist. Da schaffst du dir nur eine zusätzliche Fehlerquelle. Einfacher ist es, die Grafik in eine Datei zu speichern, und die dann bspw. mit einem Image-Viewer unter die Lupe zu nehmen.
                        Zuletzt geändert von fireweasel; 29.08.2010, 00:14.
                        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                        Kommentar

                        Lädt...
                        X