mac-file-icon
v0.0.7
Published
Get the Finder icon for a file path
Downloads
4
Maintainers
Readme
macIconForFile
Get the native macOS icon for a specific file extension as a PNG image buffer.
Inspired and based on:
- https://github.com/kevinsawicki/mac-extension-icon
- https://github.com/incbee/NSImage-QuickLook
Retrieves icon, exactly the same way as Finder does it, including QuickLook preview generation in case if it's possible, just check out the example at the end of this page. My motivation to write this module was impossiblity to obtain file system's entry icon in Electron, there is simply no method to do that.
Installation
npm install mac-file-icon
Usage
var getIconForFile = require('mac-file-icon');
getIconForFile('/Users/', function(buffer) {
console.info(buffer);
});
You can always convert Buffer into it's base64 representation:
var getIconForFile = require('mac-file-icon');
getIconForFile('/Users/', function(buffer) {
console.info(buffer.toString('base64'));
});
In case if callback is ommited, Buffer will be returned in synchronous way:
var getIconForFile = require('mac-file-icon');
console.info(getIconForFile('/Users/'));
By default, icon size is set to 32x32, you can adjust it by passing additional argument:
var getIconForFile = require('mac-file-icon');
// icon size 64x64
getIconForFile('/Users/', function(buffer) {
console.info(buffer);
}, 64);
Works same way in synchronous calls:
var getIconForFile = require('mac-file-icon');
// icon size 64x64
console.info(getIconForFile('/Users/', 64));
Build it yourself
cd macIconForFile
npm install
node-gyp configure
node-gyp build
However I'm not sure if last two statements are required...
Example
You can try out an example included into the package, that uses Express, Histone and macIconForFile to generate file listing in the browser.
npm install mac-file-icon
cd node_modules/mac-file-icon/example
npm install
node index.js
Then open your web browser and navigate to http://localhost:8080/ (in case if this port number is taken, edit index.js and set another one), you will see something like this: