Ever needed a tool to crop a head, face or shape from a photo? Here is an working example to get you started.
None of the wordpress admin locale switcher plugins work, when you are using qTranslate and qTranslate does not have a separate option for admin locale, therefore to specify any other locale then the default content locale you’ll have to add the code below to qtranslate/qtranslate_hooks.php:
/** * This filter hook allows wordpress admin locale to be * different then your default qTranslate content language */ function qtrans_mofileFilter($mofile) { // replace "en_US" with your preferred admin language if (is_admin() || is_login()) return WP_LANG_DIR."/en_US.mo"; return $mofile; } add_filter('load_textdomain_mofile', 'qtrans_mofileFilter', 0); function is_login() { return in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php')); }
tested with WordPress version 3.2.1 and qTranslate version 2.5.24
Modified plupload flash runtime.
UPDATE:
This was for plupload version 1, the new version 2 comes with thumbnails already.
After selecting an image thumbnail get loaded (on the client side):
// configuration var exportExtension = "jpg"; // extension jpg or png var exportPath = "/Users/kasparsj/Work/someproject/images"; // set to your project path app.preferences.RulerUnits = Units.PIXELS; var doc = app.activeDocument; var html = ''; var exportOptions = new ExportOptionsSaveForWeb(); exportOptions.quality = 80; // set quality if (exportExtension == "jpg") { exportOptions.format = SaveDocumentType.JPEG; } else { exportOptions.format = SaveDocumentType.PNG; } // do it! processLayerSet(doc); // loops trough all layers and processes visible Art Layers function processLayerSet(layer) { for (var i=0; i<layer.layerSets.length; i++) { if (layer.layerSets[i].visible) { processLayerSet(layer.layerSets[i]); } } for (i=0; i<layer.artLayers.length; i++) { if (layer.artLayers[i].visible) { processArtLayer(layer.artLayers[i], i); } } } function processArtLayer(layer, index) { // copy layer doc.activeLayer = layer; doc.selection.deselect(); doc.selection.selectAll(); doc.selection.copy(); // create new doc, paste and crop var newDoc = app.documents.add(1920, 1080, 72, layer.name); newDoc.paste(); newDoc.selection.selectAll() intersectSelectionWithTransparency() newDoc.crop(newDoc.selection.bounds) // save new doc newDoc.exportDocument(new File(exportPath+"/"+layer.name+"."+exportExtension), ExportType.SAVEFORWEB, exportOptions); newDoc.close(SaveOptions.DONOTSAVECHANGES); } function intersectSelectionWithTransparency(){ var desc = new ActionDescriptor(); var ref = new ActionReference(); ref.putEnumerated( charIDToTypeID( "Chnl" ), charIDToTypeID( "Chnl" ), charIDToTypeID( "Trsp" ) ); desc.putReference( charIDToTypeID( "null" ), ref ); var ref1 = new ActionReference(); ref1.putProperty( charIDToTypeID( "Chnl" ), charIDToTypeID( "fsel" ) ); desc.putReference( charIDToTypeID( "With" ), ref1 ); executeAction( charIDToTypeID( "Intr" ), desc, DialogModes.NO ); }