İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

resim büyültme - küçültme

H

hoppala

Misafir
Merhaba ...
Php ile resim büyültmek/küçültmek istiyorum.
Bunun için bir kod buldum ama bunun ürettiği resimlere sağ tıklayıp resmi kaydet dediğimizde bmp olarak kaydediyor. Ben direk jpeg,gif,png olarak yaratmasını istiyorum.
Kodlar aşağıda düzeltme yaparak bu sorunu halledebilecek olan varsa şimdiden teşekkürler.
Sizinde elinizde böyle basit örnekler varsa paylaşırsanız sevinirim.

PHP:
<?php 
//thumbnail.php Büyük resimlerin thumbnail'ini (Küçüğünü) Oluşturmak İçin Kullanılır  
//GD Kütüphanesi Etkinleştirilmiş Olmalıdır 

session_start(); 
error_reporting(0); 

$resim_dosyasi = $_GET["Resim"]; 
$r = mysql_fetch_array($q);
$resim_dosyasi="$resim_dosyasi";
$en = $_GET["En"]; 
$boy = $_GET["Boy"]; 
$resim_formati = ""; 

function hata_mesaji_goster($hata_mesaji) 
{ 
    header("Content-type: image/png"); 
    $hata_resmi = ImageCreate(175,25); 
    $arkaplan = ImageColorAllocate($hata_resmi,0,0,0); 
    $kirmizi = ImageColorAllocate($hata_resmi,255,255,255); 
    $beyaz = ImageColorAllocate($hata_resmi,255,0,0); 
    ImageString($hata_resmi,3,6,6,"Hata:",$beyaz); 
    ImageString($hata_resmi,3,44,6,$hata_mesaji,$kirmizi); 
    ImagePng($hata_resmi); 
    ImageDestroy($hata_resmi); 
} 

if(!file_exists($resim_dosyasi)) die(hata_mesaji_goster("Dosya bulunamadi!")); 
if(!is_readable($resim_dosyasi)) die(hata_mesaji_goster("Dosya okunamiyor!")); 

if(strstr(strtolower($resim_dosyasi),".gif")) $resim_formati = "GIF"; 
elseif(strstr(strtolower($resim_dosyasi),".jpg") || strstr(strtolower($resim_dosyasi),".jpeg")) $resim_formati = "JPEG"; 
elseif(strstr(strtolower($resim_dosyasi),".png")) $resim_formati = "PNG"; 
else die(hata_mesaji_goster("Bilinmeyen format!")); 

switch($resim_formati) 
{ 
    case "GIF": $kaynak_resim = ImageCreateFromGif($resim_dosyasi); break; 
    case "JPEG": $kaynak_resim = ImageCreateFromJpeg($resim_dosyasi); break; 
    case "PNG": $kaynak_resim = ImageCreateFromPng($resim_dosyasi); break; 
} 

$genislik = ImageSx($kaynak_resim); 
$yukseklik = ImageSy($kaynak_resim); 

if(empty($en) || empty($boy)) 
{ 
    $en = $genislik / 2; 
    $boy = $yukseklik / 2; 
} 

if(function_exists("ImageCreateTrueColor")) $yeni_resim = ImageCreateTrueColor($en,$boy); 
else $yeni_resim = ImageCreate($en,$boy); 

ImageCopyReSampled($yeni_resim,$kaynak_resim,0,0,0,0,$en,$boy,$genislik,$yukseklik); 

switch($resim_formati) 
{ 
    case "GIF": 
        header("Content-type: image/gif"); 
        ImageGif($yeni_resim); 
        break; 
    case "JPEG": 
        header("Content-type: image/jpeg"); 
        ImageJpeg($yeni_resim); 
        break; 
    case "PNG": 
        header("Content-type: image/png"); 
        ImagePng($yeni_resim); 
        break; 
} 
ImageDestroy($yeni_resim); 

/*ÖRNEK KULLANIMI 
thumbnail.php?Resim=resim_dosyasi.jpg&En=100&Boy=100 
taninan formatlar : jpg, gif, png 
*/ 
mysql_close();
?>
 

zbahadir

0
İyinet Üyesi
Katılım
19 Mart 2006
Mesajlar
2,416
Reaction score
0
Konum
Trabzon
Yanlış hatırlıyor olabilirim ama resime sağ tıklayıp resmin uzantısını gif olarak görüyor ama bmp olarak ancak kaydedebiliyorsanız o Internet Explorer veya kullandığınız Internet tarayıcısı ile ilgili sorun olsa gerek.

Bir de FireFox ile deneyebilirmisin?
 
H

hoppala

Misafir
hayır onunla alakası yok. bazı scriptlerin ürettiği resimler normal formatında gözüküyor.
 

zbahadir

0
İyinet Üyesi
Katılım
19 Mart 2006
Mesajlar
2,416
Reaction score
0
Konum
Trabzon
Benzer bir kod kullanmıştım bir zamanlar benzer bir iş için derken aynı kodu kullanmışım :) şimdi fark ettim.

Bende farklı olarak Save As yaptığımda gif olarak kaydedebiliyorum. Biraz inceleleyim nerede değişiklik yapmışım sizinle paylaşırım.
 
H

hoppala

Misafir
çok teşekkür ederim. bekliyorum...
bunu istememin sebebi ie cache olarak açmıyo eğer gif,jpeg,png olarak gösterilmezse sayfaya her girdiğinde tekrar yokluyor, istek yapıyor.
 

zbahadir

0
İyinet Üyesi
Katılım
19 Mart 2006
Mesajlar
2,416
Reaction score
0
Konum
Trabzon
Tekrar denedim ve bende bilgisayarın birinde jpg olarak diğerinde ise gif olarak kaydedebiliyorum. Size örnek SS gönderiyorum.

thmb2gg.jpg


Gördüğüm kadarıyla script çalışıyor her ne kadar script üzerinde bir sürü gereksiz kod olsa da, biraz ayıklamak gerekiyor sanırım.

Benim tahminime göre bu scriptle ilgili değil.
 
H

hoppala

Misafir
benim bir sorum daha olucaktı.
Bu yukardaki kodda resimi her çağırışımda baştan yüklüyor yani normal bir image gibi cacheden açmıyor. Sayfanın başına;
header('Content-Control: cache');
koydum ama bi değişiklik olmadı. Cacheden açılmasını nasıl sağlayabilirim acaba ?
 

zbahadir

0
İyinet Üyesi
Katılım
19 Mart 2006
Mesajlar
2,416
Reaction score
0
Konum
Trabzon
Bu dosyanın orijinali resmi MySQL de saklıyordu ve oradan her seferinde çağırıyordu.

Resmi normalde bilgisayar üzerinden yüklediğiniz için script onu cache atmıyor, bir yolu varmı bilmiyorum.

Bence o şekilde yapmana gerek yok, resmi dosyalanabilir formata çevirerek bir değişkene yükle ve resmi her çağırdığında o resim zaten değişkende ise oradan çağır değilse yeniden yükle yapabilirsin.

Resmi değişkene normal file yükler gibi yükleyebilirsin;

PHP:
$resim = file("image.jpg");

Kolay Gelsin.
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
$resim_formati bos set edilmis, asagida onun tipine gore kontrol koymus, dolayisiyla JPG , GIF gibi birseye degistirilmesi lazim sanki o degiskenin.
 
H

hoppala

Misafir
başka bir çözüm bilen yokmu resmi her çağırdığımızda php çalışmasın, internet explorerin cachesinden açılsın (normal resimlerde olduğu gibi)
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst