lostyazilim
tr.link

resim boyutlandırırken saydamlığın kaybolması

6 Mesajlar 1.571 Okunma
acebozum
tr.link

MuhammedArslan MuhammedArslan Msa Web Tasarım Kullanıcı
  • Üyelik 19.02.2017
  • Yaş/Cinsiyet 24 / E
  • Meslek Web Developer
  • Konum Bursa
  • Ad Soyad M** A**
  • Mesajlar 933
  • Beğeniler 136 / 276
  • Ticaret 11, (%100)
Merhabalar;

sitemde kullandığım bir sistem var. Kullanıcı resmini yüklediğinde resim otomatik olarak 740*470 şeklinde boyutlandırılıyor. Buraya kadar herşey normal. Fakat kullanıcı transparan yani png şeklinde arkası saydam olan bir resim yüklediğinde resmin transparan özelliği kayboluyor ve siyah arka plan oluyor.

Sorum işe su : resimi transparan özelliğini bozmadan boyutlandırabileceğim bir fonksiyonu olan varmı ?

Kullandığım fonksiyonlar :

resimboyut.php :

/*
* File: SimpleImage.php
* Author: Simon Jarvis
*/

class SimpleImage {

var $image;
var $image_type;

function load($filename) {

$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {

$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {

$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {

$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {

if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {

imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {

imagepng($this->image,$filename);
}
if( $permissions != null) {

chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {

if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {

imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {

imagepng($this->image);
}
}
function getWidth() {

return imagesx($this->image);
}
function getHeight() {

return imagesy($this->image);
}
function resizeToHeight($height) {

$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}

function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}

function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}

function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}

}
?>



Sayfa İçinde Kullanımı :

include('resimboyut.php');
$image = new SimpleImage();
$image->load("resim1.png");
$image->resize(770,470);
$image->save("resim1.png");
 

 

wmaraci
reklam

PHRoZeN PHRoZeN WM Aracı Kullanıcı
  • Üyelik 08.03.2017
  • Yaş/Cinsiyet 37 / E
  • Meslek Full Stack Developer
  • Konum İstanbul Avrupa
  • Ad Soyad Ş** B**
  • Mesajlar 54
  • Beğeniler 2 / 14
  • Ticaret 0, (%0)
Şu şekilde denermisin

$image->save("resim1.png",IMAGETYPE_PNG);
 

 

MuhammedArslan MuhammedArslan Msa Web Tasarım Kullanıcı
  • Üyelik 19.02.2017
  • Yaş/Cinsiyet 24 / E
  • Meslek Web Developer
  • Konum Bursa
  • Ad Soyad M** A**
  • Mesajlar 933
  • Beğeniler 136 / 276
  • Ticaret 11, (%100)
PHRoZeN Malesef hocam. Denedim fakat halen arka plan siyah oluyor.
 

 

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)
http://stackoverflow.com/questions/13066355/how-to-keep-transparent-background-on-png-when-resizing-with-php
 

 

wmaraci
wmaraci

MuhammedArslan MuhammedArslan Msa Web Tasarım Kullanıcı
  • Üyelik 19.02.2017
  • Yaş/Cinsiyet 24 / E
  • Meslek Web Developer
  • Konum Bursa
  • Ad Soyad M** A**
  • Mesajlar 933
  • Beğeniler 136 / 276
  • Ticaret 11, (%100)
AhmetKarabulut teşekkürler hocam. sorunu bu kaynaktan çözmesem de ilham oldu diyebilirim.

Sorunu
http://stackoverflow.com/questions/279236/how-do-i-resize-pngs-with-transparency-in-php

buradan hallettim.
En alttaki yorumda ki kodu kullandım.
 

 

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)
mrarslan rica ederim hocam işinizi görmüş olmasına sevindim :)
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al