Index: lams_central/src/java/org/lamsfoundation/lams/web/PortraitSaveAction.java
===================================================================
diff -u -ra4fd7ba340a2beac7436660039f13b9c8708f172 -r1783f39beaef59b68da9b1f1fe51004326254e16
--- lams_central/src/java/org/lamsfoundation/lams/web/PortraitSaveAction.java (.../PortraitSaveAction.java) (revision a4fd7ba340a2beac7436660039f13b9c8708f172)
+++ lams_central/src/java/org/lamsfoundation/lams/web/PortraitSaveAction.java (.../PortraitSaveAction.java) (revision 1783f39beaef59b68da9b1f1fe51004326254e16)
@@ -120,8 +120,8 @@
}
// upload to the content repository
- originalFileNode = getCentralToolContentHandler().uploadFile(is, fileNameWithoutExt + "_original.png",
- "image/png");
+ originalFileNode = getCentralToolContentHandler().uploadFile(is, fileNameWithoutExt + "_original.jpg",
+ "image/jpeg");
is.close();
log.debug("saved file with uuid: " + originalFileNode.getUuid() + " and version: "
+ originalFileNode.getVersion());
@@ -130,23 +130,23 @@
is = ResizePictureUtil.resize(file.getInputStream(),
IUserManagementService.PORTRAIT_LARGEST_DIMENSION_LARGE);
NodeKey node = getCentralToolContentHandler().updateFile(originalFileNode.getUuid(), is,
- fileNameWithoutExt + "_large.png", "image/png");
+ fileNameWithoutExt + "_large.jpg", "image/jpeg");
is.close();
log.debug("saved file with uuid: " + node.getUuid() + " and version: " + node.getVersion());
//resize to the medium size
is = ResizePictureUtil.resize(file.getInputStream(),
IUserManagementService.PORTRAIT_LARGEST_DIMENSION_MEDIUM);
- node = getCentralToolContentHandler().updateFile(node.getUuid(), is, fileNameWithoutExt + "_medium.png",
- "image/png");
+ node = getCentralToolContentHandler().updateFile(node.getUuid(), is, fileNameWithoutExt + "_medium.jpg",
+ "image/jpeg");
is.close();
log.debug("saved file with uuid: " + node.getUuid() + " and version: " + node.getVersion());
//resize to the small size
is = ResizePictureUtil.resize(file.getInputStream(),
IUserManagementService.PORTRAIT_LARGEST_DIMENSION_SMALL);
- node = getCentralToolContentHandler().updateFile(node.getUuid(), is, fileNameWithoutExt + "_small.png",
- "image/png");
+ node = getCentralToolContentHandler().updateFile(node.getUuid(), is, fileNameWithoutExt + "_small.jpg",
+ "image/jpeg");
is.close();
log.debug("saved file with uuid: " + node.getUuid() + " and version: " + node.getVersion());
Index: lams_central/web/includes/javascript/webrtc-capturestill.js
===================================================================
diff -u -rba7ef9fb0209892892930cb3583066b70880b08b -r1783f39beaef59b68da9b1f1fe51004326254e16
--- lams_central/web/includes/javascript/webrtc-capturestill.js (.../webrtc-capturestill.js) (revision ba7ef9fb0209892892930cb3583066b70880b08b)
+++ lams_central/web/includes/javascript/webrtc-capturestill.js (.../webrtc-capturestill.js) (revision 1783f39beaef59b68da9b1f1fe51004326254e16)
@@ -142,7 +142,10 @@
croppieWidget.croppie('bind', {
url: objectURL
});
- });
+ },
+ "image/jpeg",
+ 1
+ );
//*LAMS* commented out by LAMS
//var data = canvas.toDataURL('image/png');
Index: lams_central/web/portrait.jsp
===================================================================
diff -u -r9854a395461bf77e72934605a08a95b73ce8e12b -r1783f39beaef59b68da9b1f1fe51004326254e16
--- lams_central/web/portrait.jsp (.../portrait.jsp) (revision 9854a395461bf77e72934605a08a95b73ce8e12b)
+++ lams_central/web/portrait.jsp (.../portrait.jsp) (revision 1783f39beaef59b68da9b1f1fe51004326254e16)
@@ -54,12 +54,7 @@
message : '
'
});
- //Creates a Blob object representing the image contained in the canvas. Which we then upload to the server.
- croppieWidget.croppie('result', 'blob').then(function(blob) {
- var formData = new FormData();
- formData.append("file", blob);
- uploadProtraitToServerSide(formData);
- });
+ uploadProtraitToServerSide(croppieWidget);
});
//update dialog's height and title
@@ -93,30 +88,37 @@
}
});
$('#save-upload-button').on('click', function (ev) {
- $uploadCroppie.croppie('result', 'blob').then(function(blob) {
- var formData = new FormData();
- formData.append("file", blob);
- uploadProtraitToServerSide(formData);
- });
+ uploadProtraitToServerSide($uploadCroppie);
});
});
- function uploadPortraitFile() {
- var formData = new FormData(document.getElementById("PortraitActionForm"));
- uploadProtraitToServerSide(formData);
- }
-
- function uploadProtraitToServerSide(formData) {
- $.ajax({
- data : formData,
- async : false,
- processData : false, // tell jQuery not to process the data
- contentType : false, // tell jQuery not to set contentType
- type : $("#PortraitActionForm").attr('method'),
- url : $("#PortraitActionForm").attr('action'),
- success : function(data) {
- window.parent.location.reload();
- }
+ //Creates a Blob object representing the image contained in the canvas. Which we then upload to the server.
+ function uploadProtraitToServerSide(uploadCroppie) {
+ uploadCroppie.croppie('result', {
+ type: 'blob',
+ size: {
+ width: PORTRAIT_SIZE,
+ height: PORTRAIT_SIZE,
+ },
+ format: 'jpeg',
+ quality: 0.95,
+ backgroundColor: '#FFF',
+ }).then(function(blob) {
+ var formData = new FormData();
+ formData.append("file", blob);
+
+ //upload protrait to server side
+ $.ajax({
+ data : formData,
+ async : false,
+ processData : false, // tell jQuery not to process the data
+ contentType : false, // tell jQuery not to set contentType
+ type : $("#PortraitActionForm").attr('method'),
+ url : $("#PortraitActionForm").attr('action'),
+ success : function(data) {
+ window.parent.location.reload();
+ }
+ });
});
}
Index: lams_common/src/java/org/lamsfoundation/lams/util/imgscalr/ResizePictureUtil.java
===================================================================
diff -u -r4340b53d8412d3838eb7400ddfc821018234a1e9 -r1783f39beaef59b68da9b1f1fe51004326254e16
--- lams_common/src/java/org/lamsfoundation/lams/util/imgscalr/ResizePictureUtil.java (.../ResizePictureUtil.java) (revision 4340b53d8412d3838eb7400ddfc821018234a1e9)
+++ lams_common/src/java/org/lamsfoundation/lams/util/imgscalr/ResizePictureUtil.java (.../ResizePictureUtil.java) (revision 1783f39beaef59b68da9b1f1fe51004326254e16)
@@ -26,7 +26,11 @@
import java.io.IOException;
import java.io.InputStream;
+import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.ImageWriter;
+import javax.imageio.stream.ImageOutputStream;
import org.apache.log4j.Logger;
import org.lamsfoundation.lams.util.CircularByteBuffer;
@@ -66,8 +70,7 @@
/**
* Reads the original image, creates a resized copy of it and returns its input stream. largestDimension is the
- * largest
- * dimension of the resized image, the other dimension is scaled accordingly.
+ * largest dimension of the resized image, the other dimension is scaled accordingly.
*
* @param image
* original image
@@ -81,13 +84,23 @@
try {
//resize to 150 pixels max
BufferedImage outImage = Scalr.resize(image, Method.QUALITY, largestDimension);
+
+ //set jpeg compression quality explicitly
+ ImageWriter imageWriter = ImageIO.getImageWritersByFormatName("jpeg").next();
+ ImageWriteParam jpgWriteParam = imageWriter.getDefaultWriteParam();
+ jpgWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+ jpgWriteParam.setCompressionQuality(1);
- // buffer all data in a circular buffer of infinite size
- CircularByteBuffer cbb = new CircularByteBuffer(CircularByteBuffer.INFINITE_SIZE);
- ImageIO.write(outImage, "PNG", cbb.getOutputStream());
- cbb.getOutputStream().close();
+ // buffer all data in a circular buffer of infinite sizes
+ CircularByteBuffer outputBuffer = new CircularByteBuffer(CircularByteBuffer.INFINITE_SIZE);
+ ImageOutputStream ios = ImageIO.createImageOutputStream(outputBuffer.getOutputStream());
+ imageWriter.setOutput(ios);
+ IIOImage outputImage = new IIOImage(outImage, null, null);
+ imageWriter.write(null, outputImage, jpgWriteParam);
+ imageWriter.dispose();
+ outputBuffer.getOutputStream().close();
- return cbb.getInputStream();
+ return outputBuffer.getInputStream();
} catch (IOException e) {
log.error(e.getStackTrace());
Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java
===================================================================
diff -u -r64ee69765400783a3e284e7856aa91cdd01f4831 -r1783f39beaef59b68da9b1f1fe51004326254e16
--- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 64ee69765400783a3e284e7856aa91cdd01f4831)
+++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 1783f39beaef59b68da9b1f1fe51004326254e16)
@@ -573,9 +573,9 @@
// prepare medium image
InputStream mediumIS = ResizePictureUtil.resize(originalImage, mediumImageDimensions);
String mediumFileName = ImageGalleryServiceImpl.MEDIUM_FILENAME_PREFIX
- + fileName.substring(0, fileName.indexOf('.')) + ".png";
+ + fileName.substring(0, fileName.indexOf('.')) + ".jpg";
NodeKey mediumNodeKey = imageGalleryToolContentHandler.uploadFile(mediumIS, mediumFileName,
- "image/png");
+ "image/jpeg");
image.setMediumFileUuid(mediumNodeKey.getUuid());
//store MediumImageWidth and MediumImageHeight
InputStream mediumIS2 = imageGalleryToolContentHandler.getFileNode(mediumNodeKey.getUuid()).getFile();
@@ -588,23 +588,17 @@
InputStream originalIS2 = imageGalleryToolContentHandler.getFileNode(nodeKey.getUuid()).getFile();
InputStream thumbnailIS = ResizePictureUtil.resize(originalIS2, thumbnailImageDimensions);
String thumbnailFileName = ImageGalleryServiceImpl.THUMBNAIL_FILENAME_PREFIX
- + fileName.substring(0, fileName.indexOf('.')) + ".png";
+ + fileName.substring(0, fileName.indexOf('.')) + ".jpg";
NodeKey thumbnailNodeKey = imageGalleryToolContentHandler.uploadFile(thumbnailIS, thumbnailFileName,
- "image/png");
+ "image/jpeg");
image.setThumbnailFileUuid(thumbnailNodeKey.getUuid());
} catch (RepositoryCheckedException e) {
- ImageGalleryServiceImpl.log
- .error(messageService.getMessage("error.msg.repository.checked.exception") + ":" + e.toString());
throw new UploadImageGalleryFileException(
messageService.getMessage("error.msg.repository.checked.exception"));
} catch (NumberFormatException e) {
- ImageGalleryServiceImpl.log
- .error(messageService.getMessage("error.msg.number.format.exception") + ":" + e.toString());
throw new UploadImageGalleryFileException(messageService.getMessage("error.msg.number.format.exception"));
} catch (IOException e) {
- ImageGalleryServiceImpl.log
- .error(messageService.getMessage("error.msg.io.exception.resizing") + ":" + e.toString());
throw new ImageGalleryException(messageService.getMessage("error.msg.io.exception.resizing"));
}
}