2016-03-20 18 views
3

Bir görüntü daha fazla beyaz veya daha fazla siyah içerip içermediğini tespit etmek mümkün mü ...php GD Kütüphaneleri; görüntü bozulmadan önlemek için görüntü daha beyaz veya siyah var nasıl algılamak

Çalışan bir kırpma işlevim var ama sonuç eserler

Örnek 1 olması (bazı durumlarda) bir resmi kesmek: daha beyaz olan

  • Resim; enter image description here

Örnek 2 kırpılmış zaman enter image description here

  • (Tamam) Bu reult ver:

    • Resim fazla siyah ile: enter image description here

    • : enter image description here

    • Tamam sonuç verir

    kodunun ne tür örnek 1 yapay maddeleri önlemek için eklenebilir

    $newImage300 = imagecreatetruecolor($jFinalWidth,$jFinalHeight); 
    $wcolor = imagecolorallocate($newImage300, 0, 0, 0); 
    imagefill($newImage, 0, 0, $wcolor); 
    imagecopyresampled ($newImage300, $newImage, 0, 0, 0, 0, $jFinalWidth, $jFinalHeight, $jWidth, $jHeight); 
    
    // save image  
    imagejpeg($newImage,__path_to_new_saved_img___,70); 
    

    kodu?

    Daha da kötü gri için değiştiriliyor ...

    sonucu görme: imagecolortransparent ve voilà tarafından imagefill değiştirerek

    enter image description here enter image description here

  • +0

    örnek gri için, hedef görüntü için başka bir arka plan kullanarak denediniz, sorunu yok sağlamak için - siyah görüntüde bile mi? –

    +0

    Daha kötüsü yapar ... şimdi ikisinin de bir sonraki cevabı görecek –

    +0

    Bu, görüntünün otomatik olarak nasıl maskeleneceğinin bir örneğidir - http://phpimagick.com/Tutorial/backgroundMasking Arka planın siyah mı beyaz mı olduğunu algılama onun tarafından kaplanmış. – Danack

    cevap

    0

    Ben seçmeleri yaptı!

    bir sonuç enter image description here enter image description here

    Çalışma (sabit) kodu bkz:

    $newImage300 = imagecreatetruecolor($jFinalWidth,$jFinalHeight); 
    $wcolor = imagecolorallocate($newImage300, 0, 0, 0); 
    imagecolortransparent($newImage, $wcolor); 
    imagecopyresampled ($newImage300, $newImage, 0, 0, 0, 0, $jFinalWidth, $jFinalHeight, $jWidth, $jHeight); 
    
    // save image  
    imagejpeg($newImage,__path_to_new_saved_img___,70); 
    
    İlgili konular