dinos33 Δημοσ. 19 Αυγούστου 2010 Δημοσ. 19 Αυγούστου 2010 Γεια σας, σήμερα έκανα την εγγραφή μου στο Insomnia.gr και αυτό είναι το πρώτο θέμα που γράφω Θα ήθελα τη βοήθειά σας με ένα προβληματάκι που έχω με ένα PHP script. Αυτό που κάνει είναι να φορτώνει 2 εικόνες (την img1 και την img2) και να αλλάζει τις διαστάσεις της img2 ώστε να ταιριάζουν με αυτές της img1 (για παράδειγμα αν η img1 είναι 700x600 και η img2 είναι 400x350, τότε αλλάζει τις διαστάσεις της img2 και την κάνει και αυτή 700x600). Αυτό το script λειτουργεί μια χαρά όταν έχει να κάνει αυτή τη δουλειά με JPEG, αλλά όταν πρόκειται η img2 να είναι PNG, τότε το αποτέλεσμα αντί να είναι η img2 με αλλαγμένο μέγεθος, είναι μια τελείως μαύρη εικόνα στις διαστάσεις της img1. Θα ήθελα κάποιος να μου προτείνει κάποιο script που να λειτουργεί με PNG ή να μου πει τι μπορεί να φταίει που μόνο με τα PNG καταλήγω σ' αυτό το μαύρο αποτέλεσμα. Ελπίζω να μη ζητάω κάτι πολλά (ειδικά για πρώτο θέμα ) > <?php $img1 = imagecreatefromjpeg('img1.jpg'); $img2 = imagecreatefrompng('img2.png'); //me imagecreatefromjpeg('img2.jpg') leitourgei! $newwidth = imagesx($img1); $newheight = imagesy($img1); $width = imagesx($img2); $height = imagesy($img2); $resized_img = imagecreatetruecolor($newwidth,$newheight); imagecopyresized($resized_img, $img2, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); header('Content-type: image/png'); imagepng($resized_img); ?> Ευχαριστώ, dinos33
dinos33 Δημοσ. 19 Αυγούστου 2010 Μέλος Δημοσ. 19 Αυγούστου 2010 Γεια σας, σήμερα έκανα την εγγραφή μου στο Insomnia.gr και αυτό είναι το πρώτο θέμα που γράφω Θα ήθελα τη βοήθειά σας με ένα προβληματάκι που έχω με ένα PHP script. Αυτό που κάνει είναι να φορτώνει 2 εικόνες (την img1 και την img2) και να αλλάζει τις διαστάσεις της img2 ώστε να ταιριάζουν με αυτές της img1 (για παράδειγμα αν η img1 είναι 700x600 και η img2 είναι 400x350, τότε αλλάζει τις διαστάσεις της img2 και την κάνει και αυτή 700x600). Αυτό το script λειτουργεί μια χαρά όταν έχει να κάνει αυτή τη δουλειά με JPEG, αλλά όταν πρόκειται η img2 να είναι PNG, τότε το αποτέλεσμα αντί να είναι η img2 με αλλαγμένο μέγεθος, είναι μια τελείως μαύρη εικόνα στις διαστάσεις της img1. Θα ήθελα κάποιος να μου προτείνει κάποιο script που να λειτουργεί με PNG ή να μου πει τι μπορεί να φταίει που μόνο με τα PNG καταλήγω σ' αυτό το μαύρο αποτέλεσμα. Ελπίζω να μη ζητάω κάτι πολλά (ειδικά για πρώτο θέμα ) > <?php $img1 = imagecreatefromjpeg('img1.jpg'); $img2 = imagecreatefrompng('img2.png'); //me imagecreatefromjpeg('img2.jpg') leitourgei! $newwidth = imagesx($img1); $newheight = imagesy($img1); $width = imagesx($img2); $height = imagesy($img2); $resized_img = imagecreatetruecolor($newwidth,$newheight); imagecopyresized($resized_img, $img2, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); header('Content-type: image/png'); imagepng($resized_img); ?> Ευχαριστώ, dinos33
dewn735 Δημοσ. 20 Αυγούστου 2010 Δημοσ. 20 Αυγούστου 2010 Ρίξε μια ματιά εδώ: http://mediumexposure.com/smart-image-resizing-while-preserving-transparency-php-and-gd-library/
dewn735 Δημοσ. 20 Αυγούστου 2010 Δημοσ. 20 Αυγούστου 2010 Ρίξε μια ματιά εδώ: http://mediumexposure.com/smart-image-resizing-while-preserving-transparency-php-and-gd-library/
dinos33 Δημοσ. 21 Αυγούστου 2010 Μέλος Δημοσ. 21 Αυγούστου 2010 Ευχαριστώ για την απάντηση, είχα αρχίσει να πιστεύω ότι δε θα πάρω ούτε μία απάντηση. Πάντως, ούτε αυτός ο κώδικας λειτουργεί. Παίρνω το ίδιο αποτέλεσμα, μάλλον φταίει ότι έχει transparency το PNG αν και απ' ότι λέει το link που μου έδωσες The image transparency code was updated to a more thorough solution. See comments for info. αυτό το script δουλεύει και με διάφανα PNG (και GIF). Δοκίμασα να απομονώσω τον κώδικα που με ενδιαφέρει μήπως και λειτουργήσει αν το περιόρισω για τα PNG, μήπως υπάρχει κάποιο πρόβλημα με τους ελέγχους που πραγματοποιεί το script και κατέληξα με αυτόν τον κώδικα: ><?php $img = imagecreatefromjpeg('image.jpg'); $final_width = imagesx($img); $final_height = imagesy($img); $info = getimagesize($file); list($width_old, $height_old) = $info; $image = imagecreatefrompng('image2.png'); $image_resized = imagecreatetruecolor( $final_width, $final_height ); if ( ($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG) ) { $transparency = imagecolortransparent($image); if ($transparency >= 0) { $transparent_color = imagecolorsforindex($image, $trnprt_indx); $transparency = imagecolorallocate($image_resized, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']); imagefill($image_resized, 0, 0, $transparency); imagecolortransparent($image_resized, $transparency); } elseif ($info[2] == IMAGETYPE_PNG) { imagealphablending($image_resized, false); $color = imagecolorallocatealpha($image_resized, 0, 0, 0, 127); imagefill($image_resized, 0, 0, $color); imagesavealpha($image_resized, true); } } imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $final_width, $final_height, $width_old, $height_old); header('Content-type: image/png'); imagepng($image_resized); ?> αλλά και πάλι το ίδιο αποτέλεσμα... μια resized μαύρη εικόνα Θα ψάξω λίγο ακόμα το link που μου έδωσες αύριο, αν κάποιος έχει μια καλύτερη ή -τέλος πάντων- μια άλλη λύση ας την πει UPDATE: Και άλλοι έχουν το ίδιο πρόβλημα με εμένα ενώ χρησιμοποιούν το script στο link που μου έδωσε ο dewn735: Ok, so I’m uploading PNG files and they are resizing correctly but coming out with a black background instead of transparency. Is that due to the way the original PNG was created or is there something I need to tweek with your code. Unfortunately I don’t know a lot about working with images like this. Any help is greatly appreciated.
dinos33 Δημοσ. 21 Αυγούστου 2010 Μέλος Δημοσ. 21 Αυγούστου 2010 Ευχαριστώ για την απάντηση, είχα αρχίσει να πιστεύω ότι δε θα πάρω ούτε μία απάντηση. Πάντως, ούτε αυτός ο κώδικας λειτουργεί. Παίρνω το ίδιο αποτέλεσμα, μάλλον φταίει ότι έχει transparency το PNG αν και απ' ότι λέει το link που μου έδωσες The image transparency code was updated to a more thorough solution. See comments for info. αυτό το script δουλεύει και με διάφανα PNG (και GIF). Δοκίμασα να απομονώσω τον κώδικα που με ενδιαφέρει μήπως και λειτουργήσει αν το περιόρισω για τα PNG, μήπως υπάρχει κάποιο πρόβλημα με τους ελέγχους που πραγματοποιεί το script και κατέληξα με αυτόν τον κώδικα: ><?php $img = imagecreatefromjpeg('image.jpg'); $final_width = imagesx($img); $final_height = imagesy($img); $info = getimagesize($file); list($width_old, $height_old) = $info; $image = imagecreatefrompng('image2.png'); $image_resized = imagecreatetruecolor( $final_width, $final_height ); if ( ($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG) ) { $transparency = imagecolortransparent($image); if ($transparency >= 0) { $transparent_color = imagecolorsforindex($image, $trnprt_indx); $transparency = imagecolorallocate($image_resized, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']); imagefill($image_resized, 0, 0, $transparency); imagecolortransparent($image_resized, $transparency); } elseif ($info[2] == IMAGETYPE_PNG) { imagealphablending($image_resized, false); $color = imagecolorallocatealpha($image_resized, 0, 0, 0, 127); imagefill($image_resized, 0, 0, $color); imagesavealpha($image_resized, true); } } imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $final_width, $final_height, $width_old, $height_old); header('Content-type: image/png'); imagepng($image_resized); ?> αλλά και πάλι το ίδιο αποτέλεσμα... μια resized μαύρη εικόνα Θα ψάξω λίγο ακόμα το link που μου έδωσες αύριο, αν κάποιος έχει μια καλύτερη ή -τέλος πάντων- μια άλλη λύση ας την πει UPDATE: Και άλλοι έχουν το ίδιο πρόβλημα με εμένα ενώ χρησιμοποιούν το script στο link που μου έδωσε ο dewn735: Ok, so I’m uploading PNG files and they are resizing correctly but coming out with a black background instead of transparency. Is that due to the way the original PNG was created or is there something I need to tweek with your code. Unfortunately I don’t know a lot about working with images like this. Any help is greatly appreciated.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.