Jump to content
php.lv forumi

Mana primitīvā attēlu apstrādes bibliotēka


Recommended Posts

https://github.com/jurchiks/YAIL

Uztaisīju pa svētdienu, jo tā klase, kura bija pieejama darbā, bija baigais spageti un galīgi neparocīga (piemēram, lai resaizotu bildi, tev bija jāuztaisa 1 objekts ar patreizējo bildi, otrs ar tukšu bildi, un tad jākopē pirmo virsū otrajai, ar roku norādot koordinātes).

Nedaudz idejas pakopēju no WideImage bibliotēkas (loadFromFile/loadFromResource metožu nosaukumi), pārējais vai nu no nulles rakstīts, vai kopēts no iepriekšējās bibliotēkas ar savām izmaiņām (unsharp mask).

Basic usage:

require_once 'Image.class.php';
try
{
    Image::loadFromFile('/path/to/image')
        ->resize(400, 400, true/* exact size */, true /* center */) // ja exact, tad bilde tiek "iefitota" 400x400 attēlā vai nu pa vidu (ja center=true), vai sākot no top left stūra. Ja nav exact, tad bilde tiek resaizota proporcionāli, lai ielīstu 400x400 rāmī
        ->unsharp() // uz lielām bildēm neiesaku, baigi sūdīgs performance, jo loopo cauri katram pikselim
        ->toJpegFile('/path/to/destination/file.jpg', 90); // alt: toPngFile()
}
catch (Exception $e)
{
    error_log('image error, ' . $e->getMessage());
}

Ja toJpegFile() pirmo parametru padod null, tad outputo browserī (vajag "header('Content-type: image/jpeg')", citādi izmet kā tekstu).

 

Feedback is welcome, ja atrodat kādus bagus, būtu ļoti labi, ja pateiktu man.

Edited by jurchiks
Link to post
Share on other sites

Yeah, no. Man nepatīk, ka tik vienkāršam darbiņam kā bildes resaizošanai vajag tik daudzas klases. Tādā ziņā esmu minimālists.

Anyway, es nesaku, ka kādam šis ir jālieto, vienkārši interesē citu domas.

Edited by jurchiks
Link to post
Share on other sites

Treniņam var rakstīt arī savus parserus, da jebko var. Savā laikā DOS taisīju peles draiveri (pat dabojās +/- pieņemami), CD-ROM draiveri + kontroles libary priekš C/PASCAL/BASIC, VGA library priekš Pascal (pat visnotaļ laba sanāca) un nemaz to nenožēloju, tas ir nācis tikai par labu, lai gan tajā laikā tas viss jau bija gatavs.

Link to post
Share on other sites

Programmēt sāku mācīties ar Java.

Pēc kā pateici?

 

@101111 - nevis kreņķis, bet man tas liekas neērti. Man patīk, ka darbs ar kodu ir vienkāršs, ka man nav funkcijai jāpadod parametros speciāli konstruēti objekti.

Edited by jurchiks
Link to post
Share on other sites

Nav tur tāda štelle, kā salīdzināt divas bildes un noteikt cik atšķirīgas tās ir, rezultātu iedodot kaut kādā noteiktā skalā, kas varētu būt pēc atšķirību skaita (līdzīgi kā Levenšteina algoritms)?

Tas šķistu interesanti.

Plus, ir arī iespējams resaizot uz lielāku bildi, dramatiski nesabojājot kvalitāti? Arī tam ir dažādi algoritmi.

Šīs fīčas būtu pluss tavai bibliotēkai manuprāt.

Link to post
Share on other sites

@codez - es sāku programmēt websaitus pirms ~2 gadiem, tad es par tādu Scala vispār neko nezināju. Turklāt web backendi nomācošā vairākumā gadījumu ir rakstīti PHP.

Jāatzīst gan, ka līdz ar to nāk arī zemie kvalitātes standarti, kas man baigi besī, jo man ir ļoti augsti standarti, es neciešu piegājienu "ka tik ir".

 

@xfr33 - par salīdzināšanu nav ne jausmas (katrā ziņā nekāds lētais method call tas nebūtu, it īpaši lielākiem failiem; galvenais jautājums gan būtu - priekš kam kaut ko tādu general-purpose bibliotēkai?), bet upscaling vēl varētu padomāt (read: nošpikot no kāda :D). Vienkārši patreiz tur ir tikai tas, kas man pašam (un principā visiem, kas ar PHP apstrādā attēlus) ir primāri vajadzīgs no tādas bibliotēkas.

Ar upscaling tā ir, kā ir ar to kvalitāti, man liekas, ka, e.g., 16x16px nevar apskeilot uz 320x320px, nesabojājot kvalitāti.

Link to post
Share on other sites

> Ar upscaling tā ir, kā ir ar to kvalitāti, man liekas, ka, e.g., 16x16px nevar apskeilot uz 320x320px, nesabojājot kvalitāti.

 

Tas teorētiski nav iespējams.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...