Color JPG image saved by imwrite() incompatible with Web Browser.

2 views (last 30 days)
Hello There,
I am trying to read a file from the server and display on the webpage using JSP. The file is created using imwrite(). I have tried .jpg and .png. I have tried grayscale (8-bit depth) and color (24-bit depth). I have tried on Internet Explorer and Google Chrome. Nothing works and the image is not displayed. I have no problems displaying images downloaded from the internet.
I presume there is something in the file format that is causing all this problem. If required, I could email two .jpg file, one that works fine and the other that does not.
The MATLAB code used to create this image is:
imwrite(g,'../image/image.jpg');
Please help.
Thanks and Regards.
JSP code below:
<!DOCTYPE html>
<%@ page import="java.util.*" %>
<%@ page import="java.util.Calendar" %>
<%@ page import="java.io.File" %>
<%@ page import="java.io.*" %>
<%@ page language="java" import="java.util.*"%>
<head>
<script language="JavaScript">
var refreshImageFlag;
function refreshFlagEnable(){
refreshImageFlag = true;
}
function refreshFlagDisable(){
refreshImageFlag = false;
}
function refreshIt() {
if (!document.images) return;
if(refreshImageFlag == true){
tmp = new Date();
document.images['myCam'].src = "C:\\WebDev\\uploads\\image\\image.jpg" + "?" + tmp.getTime();
}
}
</script>
</head>
<BODY onLoad="setInterval('refreshIt()',1000);">
<<C---WebDev--uploads--image--image.jpg>>
<FORM NAME="form1" METHOD="POST">
<input type="button" value="StartRefresh" onclick="refreshFlagEnable();"/>
<input type="button" value="StopRefresh" onclick="refreshFlagDisable();"/>
</FORM>
<<C---WebDev--uploads--image--image.jpg>>
</BODY>

Answers (2)

Walter Roberson
Walter Roberson on 21 Oct 2011
Doesn't your IMG SRC have to start with file:/// for a local file? As in
img src="file:///C:\WebDev\uploads\image\image.jpg"
  9 Comments
Protik Maitra
Protik Maitra on 26 Oct 2011
Moved: Rena Berman on 28 Dec 2023
Trial 1: Did not work.
>> imwrite(g,'image.jpg','Mode','lossless');
>> info = imfinfo('image.jpg');
>> info
info =
Filename: 'image.jpg'
FileModDate: '26-Oct-2011 15:20:05'
FileSize: 146519
Format: 'jpg'
FormatVersion: ''
Width: 260
Height: 170
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''
NumberOfSamples: 3
CodingMethod: 'Huffman'
CodingProcess: 'Lossless'
Comment: {}
Trial 2: Did not work.
>> imwrite(g,'image.jpg','Quality',100);
>> info = imfinfo('image.jpg');
>> info
info =
Filename: 'image.jpg'
FileModDate: '26-Oct-2011 15:21:16'
FileSize: 92342
Format: 'jpg'
FormatVersion: ''
Width: 260
Height: 170
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''
NumberOfSamples: 3
CodingMethod: 'Huffman'
CodingProcess: 'Sequential'
Trial 3: Did not work.
>> imwrite(g,'image.jpg','Mode','lossless','Quality',100);
>> info = imfinfo('image.jpg');
>> info
info =
Filename: 'image.jpg'
FileModDate: '26-Oct-2011 15:40:27'
FileSize: 146519
Format: 'jpg'
FormatVersion: ''
Width: 260
Height: 170
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''
NumberOfSamples: 3
CodingMethod: 'Huffman'
CodingProcess: 'Lossless'
Comment: {}
Trial 4: Did not work.
>> imwrite(g,'image.jpg','Quality',94);
>> info = imfinfo('image.jpg');
>> info
info =
Filename: 'image.jpg'
FileModDate: '26-Oct-2011 15:27:41'
FileSize: 51299
Format: 'jpg'
FormatVersion: ''
Width: 260
Height: 170
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''
NumberOfSamples: 3
CodingMethod: 'Huffman'
CodingProcess: 'Sequential'
Comment: {}
Trial 5: Did not work.
>> imwrite(g,'image.jpg','Quality',93);
>> info = imfinfo('image.jpg');
>> info
info =
Filename: 'image.jpg'
FileModDate: '26-Oct-2011 15:28:19'
FileSize: 48214
Format: 'jpg'
FormatVersion: ''
Width: 260
Height: 170
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''
NumberOfSamples: 3
CodingMethod: 'Huffman'
CodingProcess: 'Sequential'
Comment: {}
Note trials 4 and 5: With quality 94, filesize is 51299; with quality 93, filesize is 48214; and internet sourced file that works has filesize 50434.
Sorry it probably looks like i am spamming this page, but I want to present as much information as possible.
Protik Maitra
Protik Maitra on 26 Oct 2011
Moved: Rena Berman on 28 Dec 2023
I tried imwrite() with <'mode', 'lossless'> as well as <'Quality', 100>. No success. I will continue to look into this. If you think of any possibilities or things I should look into, that might crop up in your mind, please do let me know. Thank you for your help so far.
-Regards-

Sign in to comment.


Richard Zapor
Richard Zapor on 20 Dec 2011
The array may be lacking the full data structure. The site http://radio.feld.cvut.cz/matlab/techdoc/printing/export21.html gives a method for establishing the structure and then using imwrite to produce a valid jpg.
figure;imagesc(data) I = getframe(gcf); imwrite(I.cdata, 'myplot.jpg', 'Quality', 50);

Categories

Find more on Denoising and Compression in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!