Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Resize без загуба в качеството ?

Featured Replies

Здравейте.

Използвам следния скрипт, за да променя размера на картинки за една галерийка, които ако се по-големи от нейните размери, няма да се поберат :


list($width, $height, $attr) = getimagesize("../images/gallery/" . $_FILES["file"]["name"] . ".jpg");


			if( $height > 491 )

			{

				$img = imagecreatefromjpeg( "../images/gallery/" . $_FILES["file"]["name"] . ".jpg"  );

				$width = imagesx($img);

				$height = imagesy($img);


				$quality = 100;

				$new_height = 491;

				$new_width = floor( $width * ( 491 / $height ) );

				$tmp_img = imagecreatetruecolor( $new_width, $new_height );

				imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

				imagejpeg( $tmp_img, "../images/gallery/" . $_FILES["file"]["name"] . ".jpg", $quality );



			}

Направил съм го да следи височината, в случай, че качените картинки не са Landscape, а Portrait.

Проблемът е, че след това картинките изглеждат доста ръбати, а искам да няма никаква загуба в качеството. Имате ли идея как би могло да се постигне това ?

Редактирано от mapko (преглед на промените)

  • Автор

Това е оригинала

post-165225-1271417495,4_thumb.jpg

Това е resize-нато с горния скрипт

post-165225-1271417525,19_thumb.jpg

А това е resize-нато с IrfanView, quality 100

post-165225-1271417553,15_thumb.jpg

Ако се вгледате, между двете resize-нати копия има доста голяма разлика - през скрипта пикселите са доста по-груби и се набиват на очи, докато през IrfanView изглежда по-приятно. Примерно погледнете чепчето отдясно на скалата на най-преден план.

Редактирано от mapko (преглед на промените)

Ако се вгледате, между двете resize-нати копия има доста голяма разлика - през скрипта пикселите са доста по-груби и се набиват на очи, докато през IrfanView изглежда по-приятно. Примерно погледнете чепчето отдясно на скалата на най-преден план.

Аз забелязвам, че през IrfanView снимката е доста по-размазана, липсва и контраст и стои сякаш не е фокус... Доста е по-зле според мен. Вземи и я намали през някой по-сериозен гр.редактар а не през това бъзикало и тогава ги сравнявай :yanim:

  • Автор

Открих един скрипт, който се справи доста по-добре от горния, постнат от мене.


<?php

/*

Owner Name: Suraj Thapaliya

Email: surajthapaliya at gmail.com



The script is used for image compression such as photo gallery and the script automatically compress the image base on the given dimension. it will automatically calculate the landscape image or portrait image


before use this code you must have to enable your gd library


If this script is useful to anyone please send me the mail   


*/

$imgfile="photo/myson.jpg"; // The Source of your image file

function imageCompression($imgfile="",$thumbsize=0,$savePath=NULL) {

    if($savePath==NULL) {

        header('Content-type: image/jpeg');

        /* To display the image in browser


        */


    }

    list($width,$height)=getimagesize($imgfile);

    /* The width and the height of the image also the getimagesize retrieve other information as well   */

    echo $width;

    echo $height;

    $imgratio=$width/$height; 

    /*

    To compress the image we will calculate the ration 

    For eg. if the image width=700 and the height = 921 then the ration is 0.77...

    if means the image must be compression from its height and the width is based on its height

    so the newheight = thumbsize and the newwidth is thumbsize*0.77...

    */


    if($imgratio>1) {

        $newwidth=$thumbsize;

        $newheight=$thumbsize/$imgratio;

    } else {

        $newheight=$thumbsize;       

        $newwidth=$thumbsize*$imgratio;

    }


    $thumb=imagecreatetruecolor($newwidth,$newheight); // Making a new true color image

    $source=imagecreatefromjpeg($imgfile); // Now it will create a new image from the source

    imagecopyresampled($thumb,$source,0,0,0,0,$newwidth,$newheight,$width,$height);  // Copy and resize the image

    imagejpeg($thumb,$savePath,100);

    /*

    Out put of image 

    if the $savePath is null then it will display the image in the browser

    */

    imagedestroy($thumb);

    /*

        Destroy the image

    */


}

imageCompression($imgfile,150,"a.jpg");

?>

Всъщност общо взето той представлява решението, което Ken е постнал :)

Редактирано от mapko (преглед на промените)

Регистрирайте се или влезете в профила си за да коментирате

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.