{"id":31834676,"url":"https://github.com/vipsimage/vips","last_synced_at":"2025-10-12T00:21:42.876Z","repository":{"id":132707537,"uuid":"213848400","full_name":"vipsimage/vips","owner":"vipsimage","description":"Vips is a go bind to libvips C API.  ","archived":false,"fork":false,"pushed_at":"2023-04-20T10:24:53.000Z","size":755,"stargazers_count":15,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-19T23:10:58.315Z","etag":null,"topics":["cgo","crop","crop-image","golang","image","jpeg","libvips","png","processing","resize","vips","webp"],"latest_commit_sha":null,"homepage":"https://vipsimage.com/vips","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vipsimage.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-09T07:18:54.000Z","updated_at":"2024-06-03T04:17:01.000Z","dependencies_parsed_at":"2023-04-24T15:18:09.272Z","dependency_job_id":null,"html_url":"https://github.com/vipsimage/vips","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/vipsimage/vips","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vipsimage%2Fvips","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vipsimage%2Fvips/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vipsimage%2Fvips/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vipsimage%2Fvips/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vipsimage","download_url":"https://codeload.github.com/vipsimage/vips/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vipsimage%2Fvips/sbom","scorecard":{"id":923051,"data":{"date":"2025-08-11","repo":{"name":"github.com/vipsimage/vips","commit":"bbc52a2889a2a5fe3c84fd253850018418285e7c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/8 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-25T06:30:17.733Z","repository_id":132707537,"created_at":"2025-08-25T06:30:17.733Z","updated_at":"2025-08-25T06:30:17.733Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279009497,"owners_count":26084609,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cgo","crop","crop-image","golang","image","jpeg","libvips","png","processing","resize","vips","webp"],"created_at":"2025-10-12T00:21:40.938Z","updated_at":"2025-10-12T00:21:42.869Z","avatar_url":"https://github.com/vipsimage.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go Vips  \nGo Vips is a go bind to libvips C API.  \n\n## Install  \nCheck if pkg-config is able to find the right libvips include:  \n```\npkg-config --cflags --libs vips  \n```\n\nPackage 'libffi', required by 'gobject-2.0', not found  \n```\n# optional, use you libffi lib path  \nexport PKG_CONFIG_PATH=\"/usr/local/opt/libffi/lib/pkgconfig\"  \n```\n\nPer the security update https://groups.google.com/forum/#!topic/golang-announce/X7N1mvntnoU you may need whitelist the -Xpreprocessor flag in your environment.  \n```\nexport CGO_CFLAGS_ALLOW='-Xpreprocessor'  \n```\n\n## examples\n```golang\nfunc main() {\n\timg := vips.NewFromFile(\"./images/Landscape_2.jpg\")\n\twm := vips.NewFromFile(\"./images/away.webp\")\n\n\terr := wm.ThumbnailImage(200)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = wm.Resize(float64(img.Width()) / float64(wm.Width()))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = wm.Rotate(30)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = wm.Replicate(img.Width()/wm.Width()+1, img.Height()/wm.Height()+1)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\timg.Replicate(2, 2)\n\n\tfmt.Println(img.Height(), img.Width())\n\n\timgCopy, err := img.Copy()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(imgCopy.Width())\n\n\terr = img.Save2file(\"out.png\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n```\n\n## Features  \n### conversion \n- Copy: Copy an image, optionally modifying the header.\n- Replicate: repeats an image many times.  \n- Gravity: place in within an image of size width by height at a certain gravity.  \n- Composite2: composite overlay on top of base with mode .  \n- GetAngle: examine the metadata on im and return the VipsAngle  \n- AutoRot: look at the image metadata and rotate the image to make it upright.  \n- Embed: Embed *Image within an image of size width by height at position x , y .  \n- ExtractArea: extract an area from an image. The area must fit within *Image.  \n- Crop: Crop a synonym for ExtractArea  \n- Flip: Flip an image left-right or up-down.  \n- Grid: Grid chop a tall thin image up into a set of tiles, lay the tiles out in a grid.  \n- Scale: Scale search the image for the maximum and minimum value  \n- SubSample: SubSample an image by an integer fraction. This is fast, nearest-neighbour shrink.  \n- Zoom: Zoom an image by repeating pixels. This is fast nearest-neighbour zoom.  \n- Wrap: Wrap slice an image up and move the segments  \n- ExtractBand: SmartCrop crop an image down to a specified width and height by removing boring parts.  \n### create  \n- Black: Black make a black unsigned char image of a specified size.  \n- Xyz: Xyz Create a two-band uint32 image where the elements in the first band have the value of their x coordinate and elements in the second band have their y coordinate.  \n- Grey: Grey create a one-band float image with the left-most column zero and the right-most 1.  \n- GaussMat: GaussMat Creates a circularly symmetric Gaussian image of radius sigma.  \n- LogMat: LogMat creates a circularly symmetric Laplacian of Gaussian mask of radius sigma.  \n- Text: Text draw the string text to an image.  \n- GaussNoise: GaussNoise make a one band float image of gaussian noise with the specified distribution.  \n- Eye: Eye create a test pattern with increasing spatial frequence in X and amplitude in Y.  \n- Sines: Sines creates a float one band image of the a sine waveform in two dimensions.  \n- Zone: Zone create a one-band image of a zone plate.  \n- Identity: Identity creates an identity lookup table.  \n- BuildLut: BuildLut this operation builds a lookup table from a set of points.  \n- InvertLut: InvertLut given a mask of target values and real values, generate a LUT which will map reals to targets.  \n- ToneLut: ToneLut generates a tone curve for the adjustment of image levels.  \n- MaskIdeal: MaskIdeal Make an ideal high- or low-pass filter.  \n- MaskIdealRing: MaskIdealRing make an ideal ring-pass or ring-reject filter.  \n- MaskIdealBand: MaskIdealBand make an ideal band-pass or band-reject filter.  \n- MaskButterWorth: MaskButterWorth make an butterworth high- or low-pass filter.  \n- MaskButterWorthRing: MaskButterWorthRing Make a butterworth ring-pass or ring-reject filter.  \n- MaskButterWorthBand: MaskButterWorthBand make an butterworth band-pass or band-reject filter  \n- MaskGaussian: MaskGaussian Make a gaussian high- or low-pass filter.  \n- MaskGaussianRing: MaskGaussianRing Make a gaussian ring-pass or ring-reject filter.  \n- MaskGaussianBand: MaskGaussianBand Make a gaussian band-pass or band-reject filter.  \n- MaskFractal: MaskFractal operation should be used to create fractal images by filtering the power spectrum of Gaussian white noise  \n- FractSurf: FractSurf Generate an image of size width by height and fractal dimension fractalDimension.  \n- Worley: Worley create a one-band float image of Worley noise.  \n- Perlin: Perlin create a one-band float image of Perlin noise.  \n### draw  \n- DrawRect: DrawRect paint pixels within left , top , width , height in image with ink.  \n- DrawRect1: DrawRect1 as DrawRect, but just take a single float64 for ink.  \n- DrawPoint: DrawPoint draw a single pixel at x, y.  \n- DrawPoint1: DrawPoint1 as DrawPoint, but just take a single float64 for ink.  \n- DrawImage: DrawImage draw sub on top of image at position x, y.  \n- DrawMask: DrawMask draw mask on the image. mask is a monochrome 8-bit image with 0/255 for transparent or ink coloured points.  \n- DrawMask1: DrawMask1 as DrawMask, but just take a single float64 for ink.  \n- DrawLine: DrawLine draws a 1-pixel-wide line on an image.  \n- DrawLine1: DrawLine1 as DrawLine, but just take a single double for ink.  \n- DrawCircle: DrawCircle Draws a circle on image.  \n- DrawCircle1: DrawCircle1 as DrawCircle, but just take a single double for ink.  \n- DrawFlood: DrawFlood flood-fill image with ink, starting at position x , y.  \n- DrawFlood1: DrawFlood1 as DrawFlood, but just take a single double for ink.  \n- DrawSmudge: DrawSmudge smudge a section of image.  \n### foreign_save\n\n### freqfilt\n- FwFFT: FwFFT transform an image to Fourier space.\n- InvFFT: InvFFT transform an image from Fourier space to real space.\n- FreqMult: FreqMult transformed to Fourier space, multipled with mask.\n- Spectrum: Spectrum make a displayable (ie. 8-bit unsigned int) power spectrum.\n- Phasecor: Phasecor convert the two input images to Fourier space, calculate phase-correlation, back to real space.\n### header\n### mosaicing\n- Merge: Merge joins two images left-right (with ref on the left)  or up-down (with ref above) with a smooth seam.\n- Mosaic: Mosaic joins two images left-right (with ref on the left) or top-bottom (with ref above) given an approximate overlap.\n- Mosaic1: Mosaic1 This operation joins two images top-bottom (with sec on the right) or left-right (with sec at the bottom) given an approximate pair of tie-points.\n- Match: Match scale, rotate and translate sec so that the tie-points line up.\n- GlobalBalance: GlobalBalance can be used to remove contrast differences in an assembled mosaic.\n- ReMosaic: ReMosaic takes apart the mosaiced image in and rebuilds it, substituting images.\n### resample\n- Resize:  Resize image\n- Rotate: Rotate image\n- Thumbnail: Thumbnail Make a thumbnail from a file\n- ThumbnailBuffer: ThumbnailBuffer Make a thumbnail from []byte\n- ThumbnailImage: ThumbnailImage Make a thumbnail from *Image\n### vip\n- DefaultInit: DefaultInit init vips by default\n- Init: Init starts up libvips\n- Shutdown: Shutdown drop caches and close plugins. Run with \"--vips-leak\" to do a leak check too.\n- LeakSet: LeakSet turn on or off vips leak checking\n- VersionString: VersionString get the VIPS version as a static string, including a build date and time.\n- Version: Version get the major, minor or micro library version, with flag values 0, 1 and 2.\n- Error: Error Get a pointer to the start of the error buffer as a C string.\n### vipsimage\n- New: New empty VipsImage\n- NewMemory: NewMemory creates a new VipsImage.\n- NewFromFile: NewFromFile opens filename for reading.\n- NewFromBuffer: NewFromBuffer loads an image from the formatted area of memory buf.\n- Height: Height return image height\n- Width:  Width return image width\n- ProgressSet: ProgressSet ff set, vips will print messages about the progress of computation to stdout.\n- ImageSetProgress: ImageSetProgress vips signals evaluation progress via the “preeval”\n\n## Contributing\nWe appreciate your help!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvipsimage%2Fvips","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvipsimage%2Fvips","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvipsimage%2Fvips/lists"}