chat eczaonline.com yazılım uzmanı gaziantep web tasarım

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

H

hoppala

#1
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();
?>
 
Katılım
19 Mar 2006
Mesajlar
2,416
Beğeniler
0
Konum
Trabzon
#2
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

#3
hayır onunla alakası yok. bazı scriptlerin ürettiği resimler normal formatında gözüküyor.
 
Katılım
19 Mar 2006
Mesajlar
2,416
Beğeniler
0
Konum
Trabzon
#4
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

#5
ç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.
 
Katılım
19 Mar 2006
Mesajlar
2,416
Beğeniler
0
Konum
Trabzon
#6
Tekrar denedim ve bende bilgisayarın birinde jpg olarak diğerinde ise gif olarak kaydedebiliyorum. Size örnek SS gönderiyorum.



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

#7
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 ?
 
Katılım
19 Mar 2006
Mesajlar
2,416
Beğeniler
0
Konum
Trabzon
#8
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

Onursal Üye
Katılım
13 Ara 2004
Mesajlar
9,603
Beğeniler
111
Yaş
37
Konum
AZ
#9
$resim_formati bos set edilmis, asagida onun tipine gore kontrol koymus, dolayisiyla JPG , GIF gibi birseye degistirilmesi lazim sanki o degiskenin.
 
H

hoppala

#10
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)
 

Bu konuyu okuyanlar (Üyeler: 1, Misafirler: 1)

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. iyinet.com sayfalarında yer alan yazı, görsel ve linklerle ilgili hukuki şikayetleriniz için Buradan iletişime geçmeniz durumunda, ilgili kanunlar ve yönetmelikler çerçevesinde en geç 7 gün içerisinde iyinet yönetimince tarafınıza dönüş sağlanacaktır. Betcup Artemisbet Forum canlı bahis sohbet - - chat
Üst