php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Jobs und Projekte > Projekthilfe
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


Projekthilfe Hier könnt Ihr eine Art Projekthilfe anfordern. Unter Projekthilfe verstehen wir Angebote bei denen KEIN Geld gezahlt werden kann.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-08-2010, 17:53
Udii
 Registrierter Benutzer
Links : Onlinestatus : Udii ist offline
Registriert seit: Aug 2010
Beiträge: 5
Udii befindet sich auf einem aufstrebenden Ast
Standard 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

Mit Zitat antworten
  #2 (permalink)  
Alt 19-08-2010, 17:59
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
  #3 (permalink)  
Alt 19-08-2010, 20:35
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

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

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #4 (permalink)  
Alt 20-08-2010, 11:06
Udii
 Registrierter Benutzer
Links : Onlinestatus : Udii ist offline
Registriert seit: Aug 2010
Beiträge: 5
Udii befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
  #5 (permalink)  
Alt 20-08-2010, 11:36
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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
Mit Zitat antworten
  #6 (permalink)  
Alt 20-08-2010, 11:54
Udii
 Registrierter Benutzer
Links : Onlinestatus : Udii ist offline
Registriert seit: Aug 2010
Beiträge: 5
Udii befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
  #7 (permalink)  
Alt 20-08-2010, 11:58
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

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

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 20-08-2010, 12:03
Udii
 Registrierter Benutzer
Links : Onlinestatus : Udii ist offline
Registriert seit: Aug 2010
Beiträge: 5
Udii befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
  #9 (permalink)  
Alt 20-08-2010, 12:08
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Ich hab grad keine Zeit dafür, aber ich verschieb das mal nach Projekthilfe. Vielleicht findet sich ja jemand dafür.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #10 (permalink)  
Alt 22-08-2010, 22:33
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

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
    
));

Mit Zitat antworten
  #11 (permalink)  
Alt 23-08-2010, 17:03
Udii
 Registrierter Benutzer
Links : Onlinestatus : Udii ist offline
Registriert seit: Aug 2010
Beiträge: 5
Udii befindet sich auf einem aufstrebenden Ast
Standard

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?
Mit Zitat antworten
  #12 (permalink)  
Alt 29-08-2010, 01:06
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
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 ...

Zitat:
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.

Geändert von fireweasel (29-08-2010 um 01:14 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bild skalieren (aber nur wenn nötig) KoLSMS HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 8 07-07-2008 15:08
[CSS] Background-image nur im FF, nicht im IE? Takeliner HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 3 13-09-2006 22:31
image upload (funkt) und image resize (funkt nicht) meikl PHP Developer Forum 9 21-12-2004 00:11
[CSS] background-image in klasse will nicht Luke HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 4 05-02-2004 17:13
Text teilweise nicht skalieren lassen tomstig HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 12 13-11-2003 09:23

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:00 Uhr.